- Python進階編程:編寫更高效、優雅的Python代碼
- 劉宇宙 謝東 劉艷
- 481字
- 2021-04-30 12:39:34
1.4.1 四舍五入運算
在實際應用中,我們經常需要對浮點數執行指定精度的四舍五入運算,以免小數位數過多。
對于簡單的四舍五入運算,使用內置的round(value,ndigits)函數即可實現,代碼(number_round.py)示例如下:
print(round(1.23, 1)) print(round(1.28, 1)) print(round(-1.27, 1)) print(round(1.25361,3))
執行py文件,輸出結果如下:
1.2 1.3 -1.3 1.254
當一個值剛好在兩個邊界的中間時,round()函數返回離它最近的偶數。例如,對于1.5或者2.5的舍入運算,使用round()函數的輸出結果是2。
傳給round()函數的ndigits參數可以是負數。這種情況下,舍入運算會作用在十位、百位、千位等,相關代碼(number_round.py)示例如下:
a = 1627731 print(round(a, -1)) print(round(a, -2)) print(round(a, -3))
執行py文件,輸出結果如下:
1627730 1627700 1628000
不要將舍入和格式化輸出混淆了。如果只是輸出一定長度的數,不需要使用round()函數,只需要在格式化的時候指定精度即可,相關代碼(number_round.py)示例如下:
x = 1.23456 print(f'{x: 0.2f}') print(f'{x: 0.3f}')
執行py文件,輸出結果如下:
1.23 1.235
同樣,不要試著去舍入浮點值來修正表面上看起來正確的代碼,相關代碼(number_round.py)示例如下:
a = 2.1 b= 4.2 c = a + b print(c) print(round(c, 2))
執行py文件,輸出結果如下:
6.300000000000001 6.3
大多數情況下沒有必要使用浮點數,我們也不推薦這樣做,因為在計算的時候出現的小誤差是能被理解與容忍的。如果不能允許這樣的小誤差(比如涉及金融領域),那么就得考慮使用decimal模塊了。