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