>>> '%f'%0.8407745
'0.840774'
>>> '%f'%0.8407755
'0.840776'
>>> '%f'%-0.8407755
'-0.840776'
>>> '%f'%-0.8407745
'-0.840774'
结果看起来很奇怪。它有时是地板,有时是天花板。
Python中字符串格式化程序的默认舍入模式是什么?
最佳答案
浮点数始终是一个近似值。 0.8407745
并不完全是0.8407745
:
>>> '%.53f' % 0.8407745
'0.84077449999999998020427938172360882163047790527343750'
因此,默认格式设置(四舍五入到十进制小数)可以正确地将该值四舍五入为
0.840774
。另一方面,
0.8407755
是:>>> '%.53f' % 0.8407755
'0.84077550000000000895994389793486334383487701416015625'
因此应该四舍五入。
有关原因,请参见The Floating Point Guide。 (摘要:浮点数由二进制分数之和表示)。
关于python - Python中字符串格式化程序的默认舍入模式是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20758569/