問題
你想對浮點數執行指定精度的捨入運算。
解決方案
對於簡單的捨入運算,使用內建的round(value,ndigits)函式即可。比如:
print(round(1.23, 1)) # ->1.2
print(round(1.27, 1)) # ->1.3
print(round(-1.27, 1)) # ->-1.3
print(round(1.25361, 3)) # ->1.254
當乙個值剛好在兩個邊界的中間的時候,round函式返回離它最近的偶數。也就是說,對1.5或者2.5的捨入運算都會得到2
傳給round()函式的ndigits引數可以是負數,這種情況下,捨入運算會作用在十位、百位、千位等上面。比如:
a = 1627731
print(round(a, -1)) # ->1627730
print(round(a, -2)) # ->1627700
print(round(a, -3)) # ->1628000
討論
不要將捨入和格式化輸入搞混淆了。如果你的目的只是簡單的輸出一定寬度的數,你不需要使用round()函式,而僅僅只需要在格式化的時候指定精度即可。比如:
x = 1.23456
print(format(x, '0.2f')) # ->1.23
print(format(x, '0.3f')) # ->1.235
print(f'value is ') # ->value is 1.235
同樣,不要試著去捨入浮點值來「修正」表面上看起來正確的問題。比如,你可能傾向於這樣做:
a = 2.1
b = 4.2
c = a + b
print(c) # ->6.300000000000001
print(round(c, 2)) # ->6.3
對於大數使用到浮點的程式,沒有必要也不推薦這樣做。儘管在計算的時候會有一點點小的誤差,但是這些小的誤差是能被理解與容忍的。如果不能允許這樣的小誤差(比如涉及到金融領域),那麼就得考慮使用decimal模組了。 python 數字四捨五入
在處理時間時,你會經常遇到小數點後有許多數字的浮點值。為了讓這些值更易於處理,可以用 python 內建的 round 函式將它們縮短,該函式按照指定的精度四捨五入到乙個浮點數。只要傳入要捨入的數字,再加上可選的第二個引數,指明需要傳入到小數點後多少位。如果省略第二個引數,round 將數字四捨五入...
qt的四捨五入 Qt(C )四捨五入
qt現在是四捨六入五成雙,要想四捨五入得自己想辦法,實現如下 include include double c1 3.435 double c2 3.445 double c3 3.4351 double c4 3.4451 double c5 3.445 qdebug qdebug qdebug ...
mysql 金額 四捨五入 mysql四捨五入
雲資料庫 mysql 雲資料庫 rds for mysql 是穩定可靠 可彈性伸縮的雲資料庫服務。通過雲資料庫能夠讓您幾分鐘內完成資料庫部署。雲端完全託管,讓您專注於應用程式開發,無需為資料庫運維煩惱 低至 0.24 小時起,買1年83折 雲資料庫mysql 雲資料庫 rds for mysql 是...