jam*_*her 3 python string scientific-notation decimal
我正在处理一个错误,将str
函数应用于一个实例decimal.Decimal
给我字符串'0E-1000'
.我希望str
应用于a Decimal
总会给我一个表格的字符串-?[0-9]+(\.[0-9]+)
,这就是我想要的.
首先,如果我理解正确,科学记数法'0E-1000'
表示0 x 10 ^ -1000,即零.为什么我得到零的特定表示?为什么不'0E-42'
,哪个是一样的?
其次,我不能手动构建一个Decimal
再现这个bug的东西.有缺陷的Decimal
实例来自外部源.表达式在REPL中str(Decimal(0))
评估'0'
.我怎样才能构建一个实例d
的Decimal
用于其str(d)
计算结果为'0E-1000'
?
编辑:第三,如何将任意Decimal
实例转换为字符串,你知道,十进制表示法?
如果要重现小数,只需从字符串构造它:
>>> d=decimal.Decimal("0E-1000")
>>> str(d)
'0E-1000'
Run Code Online (Sandbox Code Playgroud)
我认为区别在于0
和0.00000
(或在你的情况下为1000个零)之间的差异,这就是准确性.这在科学情况下可能是重要的,其中舍入等由操作数的精度控制.如果要使打印一致,请使用decimal.Decimal.normalize
:
>>> d=decimal.Decimal("0E-1000")
>>> d
Decimal('0E-1000')
>>> d.normalize()
Decimal('0')
>>> str(d.normalize())
'0'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
755 次 |
最近记录: |