正如 @snakecharmerb 指出的,该方法将始终返回
True
,但我不认为这会使问题变得毫无意义。顺便说一句,为什么该方法总是返回True
可以从方法canonical()
中看出:
返回参数的规范编码。目前,编码 Decimal 实例始终是规范的,因此此操作 返回其参数不变。
normalize()
,我们就会得到一些见解:
问。表达同一价值的方式有很多种。数字200, 200.000、2E2 和 02E+4 在不同精度下都具有相同的值。有没有办法将它们转换为单一可识别的规范 价值?通过去掉最右边的尾随零来标准化数字 将任何等于 Decimal('0') 的结果转换为 Decimal('0e0')。用过的 用于生成等价类属性的规范值。 例如,
和Decimal('32.100')
都是 归一化为等效值Decimal('0.321000e+2')
.Decimal('32.1')
A. Normalize() 方法将所有等效值映射到单个值 代表:
>>> values = map(Decimal, '200 200.000 2E2 .02E+4'.split()) >>> [v.normalize() for v in values] [Decimal('2E+2'), Decimal('2E+2'), Decimal('2E+2'), Decimal('2E+2')]
canonical
方法演示
精度。
>>> from decimal import Decimal
>>>
>>> values = map(Decimal, '2E2 .2E+3 .02E+4 20E1'.split())
>>> [v.canonical() for v in values]
[Decimal('2E+2'), Decimal('2E+2'), Decimal('2E+2'), Decimal('2.0E+2')]
>>>