當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python decimal.Decimal用法及代碼示例


用法:

class decimal.Decimal(value='0', context=None)

value 構造一個新的 Decimal 對象。

value 可以是整數、字符串、元組、float 或另一個 Decimal 對象。如果沒有給出 value,則返回 Decimal('0') 。如果 value 是字符串,則在刪除前導和尾隨空格字符以及下劃線之後,它應該符合十進製數字字符串語法:

sign           ::=  '+' | '-'
digit          ::=  '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
indicator      ::=  'e' | 'E'
digits         ::=  digit [digit]...
decimal-part   ::=  digits '.' [digits] | ['.'] digits
exponent-part  ::=  indicator [sign] digits
infinity       ::=  'Infinity' | 'Inf'
nan            ::=  'NaN' [digits] | 'sNaN' [digits]
numeric-value  ::=  decimal-part [exponent-part] | infinity
numeric-string ::=  [sign] numeric-value | [sign] nan

在上麵出現digit 的地方也允許使用其他 Unicode 十進製數字。這些包括來自各種其他字母表的十進製數字(例如,Arabic-Indic 和梵文數字)以及全角數字 '\uff10''\uff19'

如果 valuetuple ,它應該具有三個分量,一個符號(0 表示正數或 1 表示負數)、一個 tuple 數字和一個整數 index 。例如,Decimal((0, (1, 4, 1, 4), -3)) 返回 Decimal('1.414')

如果 valuefloat ,則二進製浮點值將無損轉換為其精確的十進製等效值。這種轉換通常需要 53 位或更多位的精度。例如, Decimal(float('1.1')) 轉換為 Decimal('1.100000000000000088817841970012523233890533447265625')

context 精度不影響存儲的位數。這完全由 value 中的位數決定。例如,Decimal('3.00000') 記錄所有五個零,即使上下文精度隻有三個。

context 參數的目的是確定在 value 是格式錯誤的字符串時該怎麽做。如果上下文捕獲 InvalidOperation ,則會引發異常;否則,構造函數返回一個新的 Decimal ,其值為 NaN

一旦構造,Decimal 對象是不可變的。

在 3.2 版中更改:現在允許構造函數的參數是float實例。

在 3.3 版中更改:float參數引發異常,如果FloatOperation陷阱已設置。默認情況下,陷阱是關閉的。

在 3.6 版中更改:允許使用下劃線進行分組,就像代碼中的整數和浮點文字一樣。

十進製浮點對象與其他內置數字類型(例如 floatint )共享許多屬性。所有常用的數學運算和特殊方法都適用。同樣,十進製對象可以被複製、 pickle 、打印、用作字典鍵、用作集合元素、比較、排序和強製轉換為另一種類型(例如 floatint )。

Decimal 對象的算術與整數和浮點數的算術之間存在一些小的差異。當餘數運算符% 應用於 Decimal 對象時,結果的符號是 dividend 的符號而不是除數的符號:

>>> (-7) % 4
1
>>> Decimal(-7) % Decimal(4)
Decimal('-3')

整數除法運算符 // 的行為類似,返回真商的整數部分(向零截斷)而不是其底,以保持通常的身份 x == (x // y) * y + x % y

>>> -7 // 4
-2
>>> Decimal(-7) // Decimal(4)
Decimal('-1')

%// 運算符分別實現規範中說明的 remainderdivide-integer 操作。

十進製對象通常不能在算術運算中與浮點數或 fractions.Fraction 的實例組合:例如,嘗試將 Decimal 添加到 float 將引發 TypeError 。但是,可以使用 Python 的比較運算符將 Decimal 實例 x 與另一個數字 y 進行比較。這避免了在不同類型的數字之間進行相等比較時混淆的結果。

在 3.2 版中更改:Mixed-type 之間的比較decimal.Decimal現在完全支持實例和其他數字類型。

除了標準的數值屬性,十進製浮點對象還有一些專門的方法:

3.6 版中的新函數。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 decimal.Decimal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。