python round函数并不是"四舍五入"

  取整函数round(x[,n])document将返回浮点数, 其值数值是取整到小数点后的n位精度上.n缺省值位0. 取整规则官方文档的说法是: 取整到距离 10n 位数上最近的那一个值. 一般情况下取整规则是四舍五入法则.在python 2.7.8的交互环境中

>>>round(3.5)
>>>4.0
>>>round(-2.5)
>>>-3.0

  这都符合我们的预期, 但是由于计算机存储浮点数的限制, 也有例外:

>>>round(2.675,2)
>>>2.67

  在 python3 round函数有了新的改动,即取整到偶数部分, 在python 3.6.1 交互环境下:

>>>round(0.5)
>>>0
>>>round(1.5)
>>>2
>>>round(2.5)
>>>2

  事实上python3实行的是标准的取整方法.IEEE75标准中共有五种取整方式(python 2 采用的是ROUND_HALF_UP). 你可以控制round取整的方法通过decimal包.

>>> from decimal import Decimal
>>> import decimal
>>> float_num = Decimal('0.5')
>>> float_num.quantize(Decimal('0'), rounding=decimal.ROUND_HALF_UP)
>>> Decimal('1')
>>> float_num.quantize(Decimal('0'), rounding=decimal.ROUND_HALF_EVEN)
>>> Decimal('0')
>>> float_num.quantize(Decimal('0'), rounding=decimal.ROUND_HALF_DOWN)
>>> Decimal('0')
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值