python round函式並不是"四捨五入"
阿新 • • 發佈:2019-01-26
取整函式round(x[,n])
document將返回浮點數, 其值數值是取整到小數點後的n位精度上.n
預設值位0. 取整規則官方文件的說法是: 取整到距離
>>>round(3.5)
>>>4.0
>>>round(-2.5)
>>>-3.0
這都符合我們的預期, 但是由於計算機儲存浮點數的限制, 也有例外:
>>>round(2.675,2)
>>>2.67
在 thon3round
函式有了新的改動,即取整到偶數部分, 在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')