|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
python3.6.1
为什么round()用来四舍五入的函数有时候并被没有进上去???
print(round(1241757, -3)) # 1242000#这是什么操作?
print(round(5.045, 2)) # 5.04
print(round(5.055, 2)) # 5.05
print(round(1.675, 2)) #1.68
print(round(2.675, 2)) #2.67
1.python的round函数并不仅仅是四舍五入,而是四舍六入五成双,即当需要舍入的位小于等于4时舍去,大于等于6进位,为5时,可能是舍也可能是入,依据是前一位,使前一位为偶数。
例如:
round(1.25, 1) #1.2
round(1.34, 1) #1.4
你会说,不对呀,round(5.055, 2) 为什么是5.05,这要从计算机浮点数的精度说起。由于计算机内部是以二进制表示数字的,十进制转成二进制会存在误差,这是不可避免的。
用高进度的形式表示,可能看的更清楚。
- >>> import decimal
- >>> a = decimal.Decimal(5.055)
- >>> a
- Decimal('5.05499999999999971578290569595992565155029296875')
复制代码
可以看出虽然非常接近5.055但仍有偏差,小数点后第三位是4,自然就舍掉了。
|
|