我对Python的舍入方式有点困惑.
有人可以解释为什么Python的行为如此?
例:
>>> round(0.05,1) # this makes sense 0.1 >>> round(0.15,1) # this doesn't make sense! Why is the result not 0.2? 0.1
同样适用于:
>>> round(0.25,1) # this makes sense 0.3 >>> round(0.35,1) # in my opinion, should be 0.4 but evaluates to 0.3 0.3
编辑:所以一般来说,Python可能会向下舍入而不是向上舍入.我是否理解可能发生的唯一"异常"事情是Python向下舍入?或者由于存储方式的原因,它是否也会"异常"四舍五入?(我还没有发现Python在我预期它向下舍入时被舍入的情况)
这实际上是设计的.从Pythons的文档:
round()
浮动的行为可能会令人惊讶:例如,round(2.675, 2)
给出2.67而不是预期的2.68.这不是一个错误:这是因为大多数小数部分不能完全表示为浮点数.
听起来像你需要这个decimal
模块:
from decimal import * x = Decimal('0.15') print x.quantize(Decimal('0.1'), rounding=ROUND_HALF_UP)
输出:
0.2