Python公开课 - 标准库Decimal详解
详解
Decimal支持对快速四舍五入十进制浮点运算,与float数据类型相比,它提供了以下几个优点:
- Decimal是以浮点模型为基础的,而浮点模型是为人类而设计的,它必然有一个至高无上的指导原则:计算机必须提供一种与人们在学校学习的算法相同的运算方式。
- Decimal能够精准表达
1.1
,3.14
这类数值,相比Float类型则不行,例如1.1+2.2
会变成3.3000000000000003
- 精确可以应用到算术中。在十进制浮点数中,
0.1 + 0.1 + 0.1 - 0.3
恰好等于零。在二进制浮点数中,结果是5.5511151231257827e-017
。当接近于零时,差异会影响可靠的相等性测试。 - Decimal含有有效位的概念,例如
1.30 + 1.20
的结果是2.50
,末尾的0其实是有含义的,这在货币中非常有价值。 - 与二进制的Float类型精度不同(它和硬件的位数有关),Decimal必须人工选择一个精度,用来更好的表示。
- Decimal可以进行符号处理及四舍五入。
- Decimal的设计主要围绕:十进制数字、数学计算及符号。
举例说明
>>> from decimal import *
>>> getcontext().prec = 28
>>> Decimal(10)
Decimal('10')
>>> Decimal(3.14)
Decimal('3.140000000000000124344978758017532527446746826171875')