1. 程式人生 > >Python round四捨五入精度缺失的解決

Python round四捨五入精度缺失的解決

問題

一般的四捨五入操作都是使用內建的round方法,但有時候會出現問題。比如

In [1]: round(2.675,2)
Out[2]: 2.67

為什麼不是2.68呢?那是因為float精度缺失導致的。

In [3]: Decimal(2.675)
Out[4]: Decimal('2.67499999999999982236431605997495353221893310546875')

你會發現,2.675其實是2.6749999999…,四捨五入可不是2.67麼?那這個問題怎麼解決呢?

方法

可以使用str.format來格式化數字實現四捨五入

from decimal import Decimal
In [4]: '{:.2f}'.format(Decimal('2.675'))
Out[5]: '2.68''