python:浮点数,如整数

时间:2013-10-23 17:21:53

标签: python floating-point

当数字没有小数时,我尝试将float转换为int。

I make this

from math import modf

def float_like_int(n):
    if abs(modf(n)[0]) < 1e-6:
        return int(n)
return n

print float_like_int(10.1)
print float_like_int(10.00001)
print float_like_int(10.000001)
print float_like_int(10.0)

存在标准功能还是更通用的方式? (没有1e-6)

4 个答案:

答案 0 :(得分:3)

我认为以下内容比您的版本更具可读性:

def float_like_int(n):
    if round(n, 6) == round(n):
        return int(round(n))
    return n

请注意,这与您的函数的含义略有不同,因为它还会将9.9999999转换为10

答案 1 :(得分:3)

如果小数部分小于1e-6(0.000001),那么您正在使用的方法试图使数字整数。这意味着如果你有一个数字4.000001(实际上是浮点数),你的函数将丢弃小数部分。您可以将1e-6更改为其他值,这些符合条件的数字将转换为 int

这是我的代码,没有导入任何额外的模块。此代码不会丢弃任何小数部分。

def Func(a):
    if (a * 10) % 10 == 0:
        return int(a)
    else:
        return a
f = 4.03
print Func(23.45)
print Func(f)
print Func(2.3)

答案 2 :(得分:1)

也许这样的事情更自然?

def float_like_int(n):
    if int(n) == float(n):
        return int(n)
    else:
        return float(n)

答案 3 :(得分:0)

您可以使用此功能:

def isWhole(x):
    if(x%1 == 0):
        return True
    else:
        return False