Python 小數點精度控制
基礎
浮點數是用機器上浮點數的本機雙精度(64 bit)表示的。提供大約17位的精度和範圍從-308到308的指數。和C語言裡面的double型別相同。Python不支援32bit的單精度浮點數。如果程式需要精確控制區間和數字精度,可以考慮使用numpy擴充套件庫。
Python 3.X對於浮點數預設的是提供17位數字的精度。
關於單精度和雙精度的通俗解釋:
單精度型和雙精度型,其型別說明符為float 單精度說明符,double 雙精度說明符。在Turbo C中單精度型佔4個位元組(32位)記憶體空間,其數值範圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型佔8 個位元組(64位)記憶體空間,其數值範圍為1.7E-308~1.7E+308,可提供16位有效數字。
要求較小的精度
將精度高的浮點數轉換成精度低的浮點數。
1.round()內建方法
這個是使用最多的,剛看了round()的使用解釋,也不是很容易懂。round()不是簡單的四捨五入的處理方式。
For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2).
1 2 3 4 5 6 7 8 |
>>> round ( 2.5 )
2
>>> round ( 1.5 )
2
>>> round ( 2.675 )
3
>>> round ( 2.675 , 2 )
2.67
|
round()如果只有一個數作為引數,不指定位數的時候,返回的是一個整數,而且是最靠近的整數(這點上類似四捨五入)。但是當出現.5的時候,兩邊的距離都一樣,round()取靠近的偶數,這就是為什麼round(2.5) = 2。當指定取捨的小數點位數的時候,一般情況也是使用四捨五入的規則,但是碰到.5的這樣情況,如果要取捨的位數前的小樹是奇數,則直接捨棄,如果偶數這向上取捨。看下面的示例:
1 2 3 4 5 6 7 8 9 10 |
>>> round ( 2.635 , 2 )
2.63
>>> round ( 2.645 , 2 )
2.65
>>> round ( 2.655 , 2 )
2.65
>>> round ( 2.665 , 2 )
2.67
>>> round ( 2.675 ,
|