gpt4 book ai didi

Python Decimal to string 产生奇怪的科学记数法

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:33 25 4
gpt4 key购买 nike

我正在处理一个错误,其中将 str 函数应用于 decimal.Decimal 的实例会给我字符串 '0E-1000'。我期望应用于 Decimalstr 总是会给我一个 -?[0-9]+(\.[0-9] 形式的字符串+),这就是我想要的。

首先,如果我没有理解错的话,科学记数法'0E-1000'代表0 x 10^-1000,即0。为什么我会得到这种特定的零表示形式?为什么不是 '0E-42',它是一样的?

其次,我无法手动构建重现此错误的 Decimal。有问题的 Decimal 实例来自外部来源。表达式 str(Decimal(0)) 在 REPL 中的计算结果为 '0'。我如何构建 Decimal 的实例 dstr(d) 的计算结果为 '0E-1000'

编辑:第三,如何将任意 Decimal 实例转换为字符串,您知道,decimal 表示法?

最佳答案

如果你想重现你的小数,只需从字符串构造它:

>>> d=decimal.Decimal("0E-1000")
>>> str(d)
'0E-1000'

我认为区别在于 00.00000(或者在您的情况下为 1000 个零)之间的区别,这就是准确性。这在科学情况下可能很重要,因为舍入等是由操作数的精度控制的。如果你想让打印一致,使用decimal.Decimal.normalize :

>>> d=decimal.Decimal("0E-1000")
>>> d
Decimal('0E-1000')
>>> d.normalize()
Decimal('0')
>>> str(d.normalize())
'0'

关于Python Decimal to string 产生奇怪的科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503172/

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