编辑:正如奥利在这篇文章下面的评论中指出的,is_integer是标准库的一部分,因此不应该像我在下面所做的那样重新实现。
此函数使用这样一个事实,即每一个整数至少有一个可被两个整除的数,且没有余数。任何n或n+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