python-對小數進行操作


浮點數的一個普遍問題是它們並不能精確的表示十進制數。 並且,即使是最簡單的數學運算也會產生小的誤差,比如:

a1 = 0.675412
b1 = 0.675411
print(a1 - b1)
# 1.0000000000287557e-06

如果你想更加精確(並能容忍一定的性能損耗),你可以使用 decimal 模塊:
from decimal import Decimal
a = Decimal("0.543211")
b = Decimal("0.543209")
print(a - b) # 0.000002

round函數四舍六入五平分(附四舍五入的方法)

python3中round()對浮點數的取舍遵循的是四舍六入五平分 ,“五平分”就是根據取舍的位數前的小數奇偶性來判斷,奇偶平分。奇數則舍棄,偶數則加一。

round(2.135, 2) # 2.13 round(2.145, 2) # 2.15
我們可以使用Python提供的decimal模塊。用於十進制數學計算,它具有以下特點:

1.提供十進制數據類型,並且存儲為十進制數序列;
2.有界精度:用於存儲數字的位數是固定的,可以通過decimal.getcontext().prec=x 來設定,不同的數字可以有不同的精度
3.浮點:十進制小數點的位置不固定(但位數是固定的)

from decimal import Decimal

aa = Decimal('2.135').quantize(Decimal('0.00'))
bb = Decimal('3.555').quantize(Decimal('0.00'))

print(aa) # 2.14
print(bb) # 3.56


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM