Python 十进制数何时被视为';规范的';?

Python 十进制数何时被视为';规范的';?,python,python-3.x,decimal,Python,Python 3.x,Decimal,在互联网上的任何地方,它总是说如果十进制是规范的,该方法将返回True 但这到底意味着什么呢?这只是我不知道的某个术语吗?正如@snakechermerb所指出的,该方法将始终返回True,但我不认为这会使问题变得毫无意义。另一方面,为什么该方法总是返回True,可以从查看方法中看出: 返回参数的规范编码。目前,编码 实例的属性始终是规范的,因此此操作 返回其参数不变 但是,当然,这并不能让我们对这个问题有更多的了解。但如果我们看一下方法,我们会得到一些见解: 通过剥离最右边的尾随零和 将等于十

在互联网上的任何地方,它总是说如果十进制是规范的,该方法将返回
True


但这到底意味着什么呢?这只是我不知道的某个术语吗?

正如@snakechermerb所指出的,该方法将始终返回
True
,但我不认为这会使问题变得毫无意义。另一方面,为什么该方法总是返回
True
,可以从查看方法中看出:

返回参数的规范编码。目前,编码 实例的属性始终是规范的,因此此操作 返回其参数不变

但是,当然,这并不能让我们对这个问题有更多的了解。但如果我们看一下方法,我们会得到一些见解:

通过剥离最右边的尾随零和 将等于十进制('0')的任何结果转换为十进制('0e0')。使用 用于为等价类的属性生成规范值。 例如,
Decimal('32.100')
Decimal('0.321000e+2')
两者都有 标准化为等效值
十进制('32.1')

以上描述或多或少地解释了什么是规范值:

有很多方法可以表达相同的价值。数字是200, 200.000、2E2和02E+4在不同精度下都具有相同的值。有没有办法把它们转换成一个可识别的规范 价值

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
方法

前3个十进制值(而不是第4个)具有相同的规范表示形式,因为它们具有相同的值和精度

>>> 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')]
>>>
根据这个方法,它总是返回
True
,所以这个问题似乎没有意义。