gpt4 book ai didi

python - 什么时候将小数视为 'canonical' ?

转载 作者:行者123 更新时间:2023-12-03 20:23:39 26 4
gpt4 key购买 nike

互联网上到处都是 is_canonical() 方法将返回 True如果十进制是规范的。
但这究竟意味着什么?这只是我不知道的一些术语吗?

最佳答案

正如@snakecharmerb 指出的那样,该方法将始终返回 True ,但我认为这不会使问题变得毫无意义。顺便说一句,为什么该方法总是返回 True从查看方法 canonical() 可以看出:

Return the canonical encoding of the argument. Currently, the encodingof a Decimal instance is always canonical, so this operationreturns its argument unchanged.


但是,当然,这并没有真正说明这个问题。但是如果我们看一下方法 normalize() ,我们得到了一些见解:

Normalize the number by stripping the rightmost trailing zeros andconverting any result equal to Decimal('0') to Decimal('0e0'). Usedfor producing canonical values for attributes of an equivalence class.For example, Decimal('32.100') and Decimal('0.321000e+2') bothnormalize to the equivalent value Decimal('32.1').


上面的描述或多或少地解释了规范值是什么。 Also :

Q. There are many ways to express the same value. The numbers 200,200.000, 2E2, and 02E+4 all have the same value at various precisions. Is there a way to transform them to a single recognizable canonicalvalue?

A. The normalize() method maps all equivalent values to a singlerepresentative:

>>> 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 个 Decimal 值(而不是第 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')]
>>>

关于python - 什么时候将小数视为 'canonical' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65871693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com