首頁  >  文章  >  後端開發  >  round四捨五入詳解--python2與python3版本間區別

round四捨五入詳解--python2與python3版本間區別

高洛峰
高洛峰原創
2016-10-17 16:05:431851瀏覽

round()方法傳回 數值 的小數點四捨五入到n個數字。

語法

以下是round()方法的語法:

語法

以下是round()方法的語法:


round( x [, n] )

參數

    x -- --一個是一個數值,表示這是一個數值-這也是一個數值,表示小數點後保留多少位

返回值

該方法返回數值x 的小數點四捨五入到n個數字

PS: round 對傳入的資料進行四捨五入,如果ngigits不傳,預設是0(是說保留整數部分).ngigits


例子

下面的例子顯示了round()方法的使用

reee

   


當我們運行上面的程序,它會產生以下結果:

#!/usr/bin/python2
print "round(80.23456, 2) : ", round(80.23456, 2)
print "round(100.000056, 3) : ", round(100.000056, 3)
print "round(-100.000056, 3) : ", round(-100.000056, 3)


捨五入為遠離0的最近倍數,如round(0.5)=1, round(-0.5)=-1;

Python3則會把x四捨五入為最近的偶數倍數,如round(0.5)=0, round(1.5)=2.0, round(2.5 )=2.0


程式碼:

round(80.23456, 2) : 80.23
round(100.000056, 3) : 100.0
round(-100.000056, 3) : -100.0

   

輸出結果:

#!/usr/bin/python2
print round(2.635, 2)
print round(2.645, 2)
print round(2.655, 2)
print round(2.665, 2)
print round(2.675, 2)

五入方法似乎和我們理解的不太一樣, 其實這個不是round的bug, 這個主要來自輸入時十進位轉換為電腦內部二進位時,且這個問題在有限精度下不可能解決,也不需要解決。

Python 的 decimal 模組可用於解決此問題。

如果大家不需要四捨五入的話,也可以考慮使用我們最熟悉的print("%.2f" % 2.675)這種方式實現。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn