Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:类似浮点数的整数_Python_Floating Point - Fatal编程技术网

python:类似浮点数的整数

python:类似浮点数的整数,python,floating-point,Python,Floating Point,当数字没有小数时,我尝试将浮点转换为int 从数学导入modf def float_like_int(n): 如果abs(modf(n)[0])

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

从数学导入modf
def float_like_int(n):
如果abs(modf(n)[0])<1e-6:
返回整数(n)
返回n
打印浮点数(10.1)
打印浮点数(10.00001)
打印浮点数(10.000001)
打印浮点数(10.0)

存在标准函数还是更通用的方法?(没有1e-6)

也许这样更自然

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

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

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

请注意,这与您的函数的含义略有不同,因为它也会将类似于
9.9999999
的内容舍入到
10

您可以使用此函数:

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

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

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

定义函数(a): 如果(a*10)%10==0: 返回整数(a) 其他: 归还 f=4.03 打印功能(23.45) 打印功能(f) 打印功能(2.3)
似乎14.00006应该被视为14,因为它足够接近了。@glglgl:那不是真的:float(14.00006)!=int(14.00006)如果您想要四舍五入,那么像F.J一样使用
round()
的答案最有意义。我在想,他的意思不是“没有1e-6”,对,而是abs(modf(14.0000006)[0])<1e-6。因此,您的解决方案与OP的不同。(对不起,我在前面的评论中忘记了两个
0
s。)
x.is_integer()
更简单。:-)
def isWhole(x):
    if(x%1 == 0):
        return True
    else:
        return False