在練習時,輸入如下代碼:
結果不准確。
原因:https://blog.csdn.net/bitcarmanlee/article/details/51179572
浮點數一個普遍的問題就是在計算機的世界中,浮點數並不能准確地表示十進制。並且,即便是最簡單的數學運算,也會帶來不可控制的后果。因為,在計算機的世界中只認識0與1
python中的decimal模塊可以解決上面的煩惱
decimal模塊中,可以通過整數,字符串或原則構建decimal.Decimal對象。如果是浮點數,特別注意因為浮點數本身存在誤差,需要先將浮點數轉化為字符串。
當然精度提升的同時,肯定帶來的是性能的損失。在對數據要求特別精確的場合(例如財務結算),這些性能的損失是值得的。但是如果是大規模的科學計算,就需要考慮運行效率了。畢竟原生的float比Decimal對象肯定是要快很多的。
使用上述辦法解決后:
知識點總結:
1. decimal模塊:
Python提供了decimal模塊用於十進制數學計算,它具有以下特點:
- 提供十進制數據類型,並且存儲為十進制數序列;
- 有界精度:用於存儲數字的位數是固定的,可以通過decimal.getcontext().prec=x 來設定,不同的數字可以有不同的精度
- 浮點:十進制小數點的位置不固定(但位數是固定的)