Python中的decompression float到int转换错误

a0zr77ik  于 7个月前  发布在  Python
关注(0)|答案(4)|浏览(107)

下面的代码是用python写的,

x = 0.29
x = int(x*100)
print(x)

字符串
它打印28,这导致了我的代码中的无限循环。我如何解决这个问题?我认为这是一些机器精度问题。我的程序我希望int(x*100)的值是29。

z9zf31ra

z9zf31ra1#

您遇到浮点精度问题,请尝试使用Decimal库,该库旨在给予更好的浮点数精度:

from decimal import Decimal

x = Decimal('0.29')
x = int(x * 100)
print(x)

字符串
应该会像你期望的那样输出29
根据OP评论:

from decimal import Decimal

def get_float():
    return 0.29  # Simulating the function that returns a float

x = int(Decimal(str(get_float())) * 100)
print(x)

gcxthw6b

gcxthw6b2#

这是Python中常见的十进制计算问题。您可以使用以下代码来实现您的目标:

from decimal import *
x = Decimal('0.29')
print(x * 100)

字符串
参考:Python Decimal Module

z6psavjg

z6psavjg3#

上述代码或代码的其余部分的应用是已知的。因此,对于上述问题,根据已知的情况,这是解决方案之一:

x = 0.29
x = round(x*100,0)
x = int(x)
print(x)

字符串

8ftvxx2r

8ftvxx2r4#

你也可以使用math,这是一个内置的python库。

import math

x = 0.29
x = x*100
print(math.ceil(x)) # prints 29

字符串

相关问题