Python 小數點精度
參考: http://www.cnblogs.com/herbert/p/3402245.html
1. round(m, n)
如果不指定位數n的時候,返回的是一個整數,而且是最靠近的整數(這點上類似四捨五入)
整數部分: 當出現.5的時候,兩邊的距離都一樣,round()取靠近的偶數,這就是為什麼round(2.5) = 2
小數部分: 當出現.5的時候,如果要取捨的位數前的小樹是奇數,則直接捨棄,如果偶數這向上取捨
>>> 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, 2)
2.67
2. 高精度使用decimal模組,配合getcontext
預設的context的精度是28位,可以設定為50位甚至更高,都可以。這樣在分析複雜的浮點數的時候,可以有更高的自己可以控制的精度。
注意:context裡面的這rounding=ROUND_HALF_EVEN 引數。ROUND_HALF_EVEN, 當half的時候,靠近even.
from decimal import *
>>> print(getcontext())
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
>>> getcontext().prec = 50
>>> b = Decimal(1)/Decimal(3)
>>> b
Decimal('0.33333333333333333333333333333333333333333333333333')
>>> c = Decimal(1)/Decimal(17)
>>> c
Decimal('0.058823529411764705882352941176470588235294117647059')
>>> float(c)
0.058823529411764705
3. 使用格式化(不推薦)
>>> a = ("%.2f" % 2.635)
>>> a
'2.63'
>>> a = ("%.2f" % 2.645)
>>> a
'2.65'
>>> a = int(2.5)
>>> a
2
其他. math模組
ceil(x) 大於或者等於x的最小整數。
floor(x) 小於或者等於x的最大整數。
1. round(m, n)
如果不指定位數n的時候,返回的是一個整數,而且是最靠近的整數(這點上類似四捨五入)
整數部分: 當出現.5的時候,兩邊的距離都一樣,round()取靠近的偶數,這就是為什麼round(2.5) = 2
小數部分: 當出現.5的時候,如果要取捨的位數前的小樹是奇數,則直接捨棄,如果偶數這向上取捨
>>> 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, 2)
2.67
2. 高精度使用decimal模組,配合getcontext
預設的context的精度是28位,可以設定為50位甚至更高,都可以。這樣在分析複雜的浮點數的時候,可以有更高的自己可以控制的精度。
注意:context裡面的這rounding=ROUND_HALF_EVEN 引數。ROUND_HALF_EVEN, 當half的時候,靠近even.
from decimal import *
>>> print(getcontext())
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
>>> getcontext().prec = 50
>>> b = Decimal(1)/Decimal(3)
>>> b
Decimal('0.33333333333333333333333333333333333333333333333333')
>>> c = Decimal(1)/Decimal(17)
>>> c
Decimal('0.058823529411764705882352941176470588235294117647059')
>>> float(c)
0.058823529411764705
3. 使用格式化(不推薦)
>>> a = ("%.2f" % 2.635)
>>> a
'2.63'
>>> a = ("%.2f" % 2.645)
>>> a
'2.65'
>>> a = int(2.5)
>>> a
2
其他. math模組
ceil(x) 大於或者等於x的最小整數。
floor(x) 小於或者等於x的最大整數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1734125/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS浮點數精度問題iOS
- JS中浮點數精度問題JS
- JavaScript 小數乘法運算精度問題JavaScript
- [Java] 浮點數的精度丟失問題與精度控制方法Java
- js精度小數位數正規表示式判斷 - JavaScriptJSJavaScript
- js浮點數儲存精度丟失原理JS
- Java中的小數運算與精度損失Java
- JavaScript解決浮點數算數運算精度問題JavaScript
- java中大數處理和高精度小數處理(so easy)Java
- javascript浮點數計算精度問題介紹JavaScript
- 【求教:如何解決 java 浮點數精度問題】Java
- javascript小數乘法運算導致的精度問題JavaScript
- php 處理 浮點數 精度運算 數字處理等PHP
- js數值精度JS
- oracle數值精度Oracle
- LibBF——處理任意精度浮點數的小型庫
- JavaScript 浮點數及運算精度調整總結JavaScript
- 單精度浮點數轉化為10進位制數的原理
- mysql格式化小數保留小數點後兩位(小數點格式化)MySql
- JS計算精度小記JS
- 浮點數小知識點
- WebGL著色器32位浮點數精度損失問題Web
- 你不知道的JavaScript--Item2 浮點數精度JavaScript
- GPS 常數 變數 精度變數
- iOS小數點格式化:最多保留兩位小數,小數點後末尾的0不要iOS
- Python如何保留float型別小數點後3位Python型別
- 浮點數轉換為String字串(可設定精度)方法字串
- Python浮點數(小數)運算誤差的原因和解決辦法Python
- js如何實現數字保留小數點後兩位小數JS
- JavaScript浮點數保留兩位小數JavaScript
- Oralce中設定小數點位數
- 關於JS的浮點數計算精度問題解決方案JS
- 去掉Excel小數點的方法Excel
- Golang浮點數精度丟失問題擴充套件包解決方案Golang套件
- Python變數小祕密Python變數
- js-正負數保留小數點特定位數JS
- Python小知識點隨筆Python
- mysql-小數點後面的0MySql