用法:
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'
。如果
value
是tuple
,它應該具有三個分量,一個符號(0
表示正數或1
表示負數)、一個tuple
數字和一個整數 index 。例如,Decimal((0, (1, 4, 1, 4), -3))
返回Decimal('1.414')
。如果
value
是float
,則二進製浮點值將無損轉換為其精確的十進製等效值。這種轉換通常需要 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 版中更改:允許使用下劃線進行分組,就像代碼中的整數和浮點文字一樣。
十進製浮點對象與其他內置數字類型(例如
float
和int
)共享許多屬性。所有常用的數學運算和特殊方法都適用。同樣,十進製對象可以被複製、 pickle 、打印、用作字典鍵、用作集合元素、比較、排序和強製轉換為另一種類型(例如float
或int
)。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')
%
和//
運算符分別實現規範中說明的remainder
和divide-integer
操作。十進製對象通常不能在算術運算中與浮點數或
fractions.Fraction
的實例組合:例如,嘗試將Decimal
添加到float
將引發TypeError
。但是,可以使用 Python 的比較運算符將Decimal
實例x
與另一個數字y
進行比較。這避免了在不同類型的數字之間進行相等比較時混淆的結果。在 3.2 版中更改:Mixed-type 之間的比較decimal.Decimal現在完全支持實例和其他數字類型。
除了標準的數值屬性,十進製浮點對象還有一些專門的方法:
3.6 版中的新函數。
相關用法
- Python decimal.Decimal.remainder_near用法及代碼示例
- Python decimal.Decimal.compare用法及代碼示例
- Python decimal.Decimal.exp用法及代碼示例
- Python decimal.Decimal.from_float用法及代碼示例
- Python decimal.Context.create_decimal_from_float用法及代碼示例
- Python decimal.localcontext用法及代碼示例
- Python decimal.InvalidOperation用法及代碼示例
- Python decimal.Context.create_decimal用法及代碼示例
- Python OpenCV destroyAllWindows()用法及代碼示例
- Python Tkinter destroy()用法及代碼示例
- Python delattr() and del()用法及代碼示例
- Python delattr()用法及代碼示例
- Python degrees() and radians()用法及代碼示例
- Python dask.dataframe.Series.apply用法及代碼示例
- Python dask.dataframe.to_records用法及代碼示例
- Python distributed.protocol.serialize.register_generic用法及代碼示例
- Python dask.dataframe.DataFrame.applymap用法及代碼示例
- Python dask.dataframe.Series.clip用法及代碼示例
- Python dask.array.stats.ttest_ind用法及代碼示例
- Python dict()用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 decimal.Decimal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。