>>> '%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/

10-09 20:28