在 Python 中对数字进行舍入


a=0.005
print ('%.2f'%a)
b=90.005
print('%.2f'%b)
c=90.015
print('%.2f'%c)

上面的代码是用python3编写的,输出如下:

0.01
90.00
90.02

这是任何类型的计算错误还是缺少一个点?

我认为这里的问题是第二个问题,即

b = 90.005
print('%.2f' % b)

现在正如@divibisan所说,如果数字在 0-4 之间,则向下舍入,如果介于 5-9 之间,则向上舍入。那么为什么90.005没有四舍五入呢?

因为计算机无法精确地表示浮点数。如果你仔细观察它,你会发现90.005被表示为,

>>> print('%.50f' % b)
90.00499999999999545252649113535881042480468750000000

这就是它被四舍五入的原因,而其他人表现正常。

>>> print ('%.50f'%a)
0.00500000000000000010408340855860842566471546888351
# 0.01
>>> print ('%.50f'%c)
90.01500000000000056843418860808014869689941406250000
# 90.02

最新更新