1. 程式人生 > >python round函式並不是"四捨五入"

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

  在py

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')