Sem*_*ime -1 python rounding format-string
根据可见小数位数的不同,舍入行为不同是错误还是预期行为?
通过交互式解释器进行演示
Python 3.8.10
>>> a = 1.555
>>> f'{a:.0f}'
'2'
>>> f'{a:.1f}'
'1.6'
>>> f'{a:.2f}'
'1.55'
>>> f'{a:.3f}'
'1.555'
Run Code Online (Sandbox Code Playgroud)
a由于浮点值的不精确表示,实际上略小于 1.555。
您可以看到这一点,例如,如下所示:
f"{a:.40f}"
'1.5549999999999999378275106209912337362766'
Run Code Online (Sandbox Code Playgroud)
或者,
f"{a:.64f}"
'1.5549999999999999378275106209912337362766265869140625000000000000'
Run Code Online (Sandbox Code Playgroud)