下面的代码是用python写的,

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

它打印28,这会导致我的代码中出现无限循环. 我如何解决此问题?我认为这是一些机器精度的问题. 在我的程序中,我希望int(x*100)的值是29.

推荐答案

如果您遇到浮点精度问题,请try 使用Decimal库,该库旨在为浮点数提供更高的精度:

from decimal import Decimal

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

应该会像您预期的那样输出29.


根据OP comments :

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) 

Python-3.x相关问答推荐

Python ModuleNotFound错误,即使安装了模块

在多个测试中维护和报告变量

数据类对象列表的字典获取方法-在数据类列表中查找具有特定变量值的数据类

给定panda代码的分组和百分比分布pyspark等价

删除浮点型数据集中每列重复值比例超过一定阈值的列

torch.stack([t1, t1, t1], dim=1)与torch.hstack([t1, t1, t1])之间有什么区别?

隐藏Cartopy中高纬度非矩形投影的右侧轴(纬度)标签

无法使用 curve_fit() 在 python 中复制高斯函数的曲线拟合

如何在 Telethon 中向机器人发送发送表情符号

使用 RANSAC 在激光雷达点云中查找电力线

以编程方式映射 uniprot ID 时如何解决 400 客户端错误?

根据另一列值对多个数据框列进行分组

BeautifulSoup 和 pd.read_html - 如何将链接保存到最终数据框中的单独列中?

为什么 Python 枚举中的可变值是同一个对象?

内部如何使用 Python 语法?

Python在OrderedDict中 Select 第i个元素

变量类型注解NameError不一致

如何使用已打开并使用登录凭据登录的浏览器

没有名为urlparse的模块,但我没有使用 urlparse

如何在 Python 3.4 中使用 pip 3?