对于python,请阅读以下链接:https://docs.python.org/3/tutorial/floatingpoint.html,“浮点算法:问题和限制”
我确实理解二进制表示浮点数与精确小数点表示浮点数之间存在不匹配(微小差异),例如。精确小数表示浮点数::1.005
python二进制表示的浮点数::1.00499999999999989341858963598497211933135986328125
下面是我在python中输入的内容:
>>> 1.005
1.005
>>> from decimal import Decimal
>>> Decimal(1.005)
Decimal('1.00499999999999989341858963598497211933135986328125')以下是我的问题:
谢谢
发布于 2021-02-02 17:20:49
当被要求将浮点值1.0049999999999999转换为string时,Python会以四舍五入的方式显示它:
>>> x = 1.0049999999999999; print(x)
1.005根据juanpa链接的岗位,Python使用David算法来决定打印浮点数时要显示多少位数。通常显示在16位左右,这是有意义的,因为64位浮点数可以代表15到17位的重要数字。。
如果要打印带有其他数字的浮点数,请使用带有精确说明符的f字符串或字符串内插(参见输入和输出- Python教程)。例如,用20位数字打印x:
>>> print(f'{x:.20}')
1.0049999999999998934
>>> print('%.20g' % x)
1.0049999999999998934https://stackoverflow.com/questions/66005367
复制相似问题