jon*_*opf 33 python floating-point
我需要打印或将浮点数转换为15位小数字符串,即使结果有许多尾随0,例如:
1.6变为1.6000000000000000
我试过回合(6.2,15),但它返回6.2000000000000002,增加了舍入误差
我也看到网上的各种各样的人把浮动放入一个字符串,然后手动添加尾随0但这似乎很糟糕......
做这个的最好方式是什么?
Dav*_*ber 61
您可以使用该str.format方法.例子:
>>> print('{0:.16f}'.format(1.6))
1.6000000000000001
>>> print('{0:.15f}'.format(1.6))
1.600000000000000
Run Code Online (Sandbox Code Playgroud)
注意1第一个例子的末尾是舍入误差; 之所以会发生这种情况是因为十进制数1.6的精确表示需要无穷多个二进制数字 由于浮点数具有有限的位数,因此该数字四舍五入到附近但不相等的值.
您可以使用"模数格式化"语法(这也适用于Python 2.6和2.7):
>>> print '%.16f' % 1.6
1.6000000000000001
>>> print '%.15f' % 1.6
1.600000000000000
Run Code Online (Sandbox Code Playgroud)
现代 Python 中最简洁的方法>=3.6是使用带有字符串格式的 f字符串:
>>> var = 1.6
>>> f"{var:.15f}"
'1.600000000000000'
Run Code Online (Sandbox Code Playgroud)