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