繁体   English   中英

在Python中舍入数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM