Python 四捨五入函數 round

小數位的四捨五入在項目中經常用到。

你可能有注意到 round 函數不能真正做到四捨五入。

round() 函數作用就是,返回浮點數x的四捨五入值。

round( x [, n]  )

簡單來說就是在浮點運算的時候丟精度。

這個與計算機系統的設計是有關係的,計算機是使用 2 進制進行計算的的,如果我們常用的數學計算或者科學計算,計算機是會丟精度的。

因此我們的解決方案其實非常簡單就是使用 Decimal 來進行數學計算。

浮點計算丟精度的問題不僅僅是 Python 會遇到的問題,Java 、 C/C++ 都會遇到這個問題。

可以考察下面的代碼:

print(round(2.3, 2))print(round(2.45, 1))print(round(2.675, 2))print(Decimal(1.325))print(Context(prec=3, rounding=ROUND_HALF_UP).create_decimal('2.675'))

上面程序的輸出爲:

2.32.52.671.32499999999999995559107901499373838305473327636718752.68

因此,在你需要進行浮點計算的時候,不要使用 Float 進行計算,你需要使用 Decimal 進行數學計算。

Python-float-cal-01

 

例如在 Java 中,我們會使用 BigDecimal 進行精確的科學計算。

https://www.ossez.com/t/python-round/133

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章