[英]Rounding numbers in 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.