【发布时间】:2019-06-12 18:59:44
【问题描述】:
我有一个数字 -123456789012345678.879,它是从 json 文件解析并存储在 dict 中的。在字典中显示为 -1.23456789012e+17
我想取回原始的完整十进制数并在输出到文件时保持原样。
a=-1.23456789012e+17
print(a)
-1.23456789012e+17
所以要删除 python 正在格式化的指数,因为我还尝试从十进制模块转换为十进制
Decimal(a)
Decimal(-123456789012345680)
在这两种情况下,python 都在改变我想要的小数的精确表示。我不希望对原始小数进行任何舍入或更改。
我目前没有将原始解析值格式化为字符串 a 的选项,需要另一种方法将 python 指数数字转换回原始格式
【问题讨论】:
-
嗨 Jimmy,你用什么来存储数据?也许它是由数据库或您使用的任何东西四舍五入的?
-
您是否尝试过将
a设为字符串(即a = "-12....678.929",然后然后 执行Decimal(a)?在我看来,a失去了精度在你分配它的那一刻,因为浮点数对于你想要做的事情来说不够精确。保持它为字符串形式,直到你可以把它变成一个可以处理精度的Decimal会缓解这个问题 -
根据您要执行的具体操作,您需要的解决方案可能会发生变化。如果您只想打印该值,则可以使用字符串格式来获得所需的精度。如果您确实需要完全精确地存储数字,您可以使用
decimal包中提供的其他选项。 -
Decimal()期望字符串,您尝试传递浮点数。