我有一个数字 -123456789012345678.879 ,该数字是从json文件解析并存储在字典中的。在字典中显示为 -1.23456789012e + 17
我想恢复原始的十进制全数字,并在输出到文件时保持原样。
a=-1.23456789012e+17
print(a)
-1.23456789012e+17
因此要删除python格式化的指数,因为我也尝试从十进制模块转换为Decimal
Decimal(a)
Decimal(-123456789012345680)
在两种情况下,python都会更改我想要的小数的确切表示形式。我不想四舍五入或更改我的原始十进制。
目前我还没有将原始解析值格式化为字符串的选项,需要将python指数转换回原始格式的另一种方法
答案 0 :(得分:0)
我不确定我是否理解这个问题,但是请记住Decimal只是一个类-它不能对传递给它的值做魔术。当您失去浮点数的精度时,发生在Decimal
调用之前,因此该类无法恢复丢失的信息。
为避免这种情况,Decimal类还允许您从字符串构造值。这样可以避免丢失精度:
>>> from decimal import Decimal
>>> Decimal('-123456789012345678.929')
Decimal('-123456789012345678.929')
>>> print(Decimal('-123456789012345678.929'))
-123456789012345678.929
有关更多详细信息,请咨询documentation。