用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。