确定值是否是Python中的整数

时间:2011-06-04 23:17:38

标签: python python-2.x

我想确定Python中的数值是否是整数。例如,给定:

y = x / 3

我想区分x的值,这些值可以被3整除。{/ p>

9 个答案:

答案 0 :(得分:58)

整数没有小数。如果你的意思是“检查数字是否在Python中得到小数”,你可以这样做:

not float(your_number).is_integer()

答案 1 :(得分:24)

if x % 3 == 0:
    print 'x is divisible by 3'

答案 2 :(得分:4)

编辑:正如Ollie在本文下面的评论中所指出的那样,is_integer是标准库的一部分,因此不应像我在下面那样重新实现。

此函数使用这样一个事实,即每隔一个整数将至少有一个可被2整除且没有余数的数字。 nn+1中的任何非零小数表示都会导致n%2(n+1)%2都有余数。这样做的好处是表示为浮点值的整数将返回True。 该功能正确地起作用 我可以确定负数和零。正如函数中所提到的,对于非常接近整数的值,它会失败。

def isInteger(n):
    """Return True if argument is a whole number, False if argument has a fractional part.

    Note that for values very close to an integer, this test breaks. During
    superficial testing the closest value to zero that evaluated correctly
    was 9.88131291682e-324. When dividing this number by 10, Python 2.7.1 evaluated
    the result to zero"""

    if n%2 == 0 or (n+1)%2 == 0:
        return True
    return False

答案 3 :(得分:3)

如果x % 3 == 0是整数,

True将为x / 3

答案 4 :(得分:2)

这是另一种方法:

x = 1/3  # insert your number here
print(x - int(x) == 0)  # True if x is a whole number, False if it has decimals.

这是有效的,因为int(x)基本上取数字的底线(例如3.6453 - > 3)。如果你减去一个地板就会遗留一些东西,那就不可能是整数。

答案 5 :(得分:1)

假设您的意思是包含数字的字符串也有小数点:

Python 2.6.6 (r266:84292, Apr 20 2011, 11:58:30) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> number='123.4'
>>> '.' in number
True
>>> number='123'
>>> '.' in number
False
>>>

要测试它是否是积分,你可以修改1:

>>> 1.0/3 % 1
0.33333333333333331
>>> 1/3 % 1
0

答案 6 :(得分:1)

在Python 2中,将int除以int将返回一个int(除非使用-Qnew选项调用python,或者from __future__ import division位于源的开头;在这种情况下{{ 1}}返回一个浮点数); a /指定整数除法。

在Python 3中,如果使用“/”,则将int除以int将返回float,如果使用“//”,则返回int。

如果你想知道int是否会完全分成另一个int,请使用“%”来查找余数。

答案 7 :(得分:0)

转换1.0 => 1并转换1.x => 1.x

如果浮点数具有小数部分(例如1.5),则此代码将返回1.5 &如果是35.00,则返回35:

a = ReadFrom()    
if float(a).is_integer(): # it is an integer number like 23.00 so return 23
       return int(a)
 else: # for numbers with decimal part like : 1.5 return 1.5
       return float(a)

答案 8 :(得分:-1)

最好在进行除法之前做出决定,假设你的x变量是一个整数。

尝试对浮点数进行相等性测试或比较是危险的:http://www.lahey.com/float.htm

在进行除法之前已经使用模数提供了答案,以查看一个整数是否可被另一个整数整除是安全的。在进行除法并处理可能的浮点值之后,数字不再是完全整数。

相关问题