【发布时间】:2010-12-29 22:50:39
【问题描述】:
我有一个Decimal('3.9') 作为对象的一部分,并希望将其编码为一个类似于{'x': 3.9} 的JSON 字符串。我不关心客户端的精度,所以浮点数就可以了。
有没有好办法序列化这个? JSONDecoder 不接受 Decimal 对象,预先转换为浮点数会产生{'x': 3.8999999999999999} 这是错误的,会浪费很大的带宽。
【问题讨论】:
-
相关Python bug:json encoder unable to handle decimal
-
3.8999999999999999 并不比 3.4 更错误。 0.2 没有精确的浮点表示。
-
@Jasen 3.89999999999 比 3.4 多出 12.8% 的错误。 JSON 标准只是关于序列化和符号,而不是实现。使用 IEEE754 不是原始 JSON 规范的一部分,它只是实现它的最常见方式。仅使用精确十进制算术的实现完全(实际上,甚至更严格)符合。
-
???? 少错了。讽刺。
标签: python json floating-point decimal