Python3 - 數(shù)字的四舍五入

問題

對浮點數(shù)執(zhí)行指定精度的舍入運算。

解決方案

對于簡單的舍入運算,使用內(nèi)置的 round(value, ndigits) 函數(shù)即可。比如:

print(round(1.23, 1))
print(round(1.27, 1))
print(round(-1.27, 1))
print(round(3.1415, 3))

1.2
1.3
-1.3
3.142

傳給 round() 函數(shù)的 ndigits 參數(shù)可以是負(fù)數(shù),這種情況下, 舍入運算會作用在十位、百位、千位等上面。比如:

print(round(1627731, -1))
print(round(1627731, -2))
print(round(1627731, -3))

1627730
1627700
1628000

討論

不要將舍入和格式化輸出搞混淆了。 如果只是簡單的輸出一定寬度的數(shù),則不需要使用 round() 函數(shù)。 只需要使用format()函數(shù)進(jìn)行格式化并指定精度。比如:

x = 3.1415926
print(format(x, '0.2f'))
print(format(x, '0.3f'))
print('value is {:0.4f}'.format(x))

3.14
3.142
value is 3.1416

同樣,不要試著去舍入浮點值來“修正”表面上看起來正確的問題。比如,你可能傾向于這樣做:

a = 2.1
b = 4.2
c = a + b

print(c)
6.300000000000001

print(round(c, 2))
6.3

盡管浮點數(shù)在計算的時候會有一點點小的誤差,但是這些小的誤差是能被理解與容忍的。 如果不能允許這樣的小誤差(比如涉及到金融領(lǐng)域),那么就得考慮使用 decimal 模塊了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容