https://blog.csdn.net/weixin_45912307/article/details/120641461
1. decimal.Decimal(value=‘0’, context=None)
- value 可以是整數,字元串,元組,float ,或另一個 Decimal 對象。 如果沒有給出 value,則傳回
。Decimal('0')
- 如果 value 是一個字元串,它應該在前導和尾随空格字元以及下劃線被删除之後符合十進制
- 如果 value 是一個 tuple ,它應該有三個元件,一個符号( 0 表示正數或 1 表示負數),一個數字的 tuple 和整數指數。 例如,
傳回Decimal((0, (1, 4, 1, 4), -3))
。Decimal('1.414')
- 如果 value 是 float ,則二進制浮點值無損地轉換為其精确的十進制等效值。 此轉換通常需要53位或更多位數的精度
- context 參數的目的是确定 value 是格式錯誤的字元串時該怎麼做。 如果上下文陷阱
,則引發異常;否則,構造函數傳回一個新的 Decimal,其值為 NaNInvalidOperation
2. quantize(exp, rounding=None, context=None)
- 傳回的值等于舍入後的第一個運算數并且具有第二個操作數的指數
- 如果第二個運算數的指數大于第一個運算數的指數那或許需要舍入。在這種情況下,舍入模式由給定
參數決定,其餘的由給定rounding
參數決定;如果參數都未給定,使用目前線程上下文的舍入模式。context
- 每當結果的指數大于 Emax 或小于 Etiny 就會傳回錯誤。
- 參數解讀:
-
:指定第一個運算數輸出的指數格式exp
-
:舍入模式rounding
-
:上下文context
-
舍入模式:
decimal.ROUND_CEILING | 舍入方向為 Infinity。
decimal.ROUND_DOWN | 舍入方向為零。
decimal.ROUND_FLOOR | 舍入方向為 -Infinity。
decimal.ROUND_HALF_DOWN | 舍入到最接近的數,同樣接近則舍入方向為零。
decimal.ROUND_HALF_EVEN | 舍入到最接近的數,同樣接近則舍入到最接近的偶數。
decimal.ROUND_HALF_UP | 舍入到最接近的數,同樣接近則舍入到零的反方向。
decimal.ROUND_UP | 舍入到零的反方向。
decimal.ROUND_05UP | 如果最後一位朝零的方向舍入後為 0 或 5 則舍入到零的反方向;否則舍入方向為零。
3. decimal.Decimal(value=‘0’, context=None).quantize(exp, rounding=None, context=None)
作用:
- 如果資料庫查詢到的結果為Decimal類型,轉化為string
from decimal import Decimal
data = Decimal('100.07159')
new_data = str(Decimal(data).quantize(Decimal('0.0')))
print(type(new_data))
- 如果資料庫查詢到的結果為Decimal類型,轉化為float
from decimal import Decimal
data = Decimal('100.07159')
new_data = float(Decimal(data).quantize(Decimal('0.0')))
print(type(new_data))
- 固定控制小數點後面的位數,不能超過getcontext().prec的位數
'''
# Rounding
ROUND_DOWN = 'ROUND_DOWN'
ROUND_HALF_UP = 'ROUND_HALF_UP'
ROUND_HALF_EVEN = 'ROUND_HALF_EVEN'
ROUND_CEILING = 'ROUND_CEILING'
ROUND_FLOOR = 'ROUND_FLOOR'
ROUND_UP = 'ROUND_UP'
ROUND_HALF_DOWN = 'ROUND_HALF_DOWN'
ROUND_05UP = 'ROUND_05UP'
'''
from decimal import Decimal
data = Decimal('100.07159')
res = float(Decimal(data).quantize(Decimal('0.001'),rounding='ROUND_HALF_UP'))
print(res)
官網連結:https://docs.python.org/zh-cn/3/library/decimal.html