JSON API中最好的格式/类型是什么

时间:2015-09-15 18:28:29

标签: javascript json types formatting currency

基本上我在考虑浮点数或字符串。

的字符串:

"10.00"
"10.05"
"10.50"
"1,000"

浮点数

10
10.05
10.5
1000

我喜欢字符串的格式化,浮点数限制精度可能存在问题。

你会选择什么?为什么?

2 个答案:

答案 0 :(得分:5)

你永远不应该使用float / double来赚钱。原因是他们在处理钱时没有按照你的意愿行事。

简单的例子,我得到10美分,然后我得到另外10美分,然后我买20美分的东西。剩下多少钱? (使用交互式python提示来说明)

void onDocumentUpdate(@Observes(during=AFTER_SUCCESS) @Updated Document doc) { ... }

现在让我们用3角钱尝试相同的东西并购买30美分的东西:

>>> 0.1 + 0.1 - 0.2 == 0
True

原因当然是float / double类型不能完全代表所有值。当您操纵数字时,您可能会累积错误,以便它实际上变得明显。所有使用float / double的编程语言在某种程度上都存在这个问题。

你最终会通过实现名为“isAlmostZero”和“isCloseTo”的函数或其他一些愚蠢来修复错误。是的,我一直在使用这样的系统。

This link也有一些关于float / double是个坏主意的解释。

现在,如果你可以将它们作为一个浮点数放在JSON中而不是在你的编程语言中将它们转换为float / double,那么它可能没问题,但是你仍然没有使用float / double作为数据类型,只是一些东西看起来像它并转化为不同的东西。我想大多数JSON解析器只会将它转换为浮点值,如果你这样输入它。

答案 1 :(得分:-4)

使用浮动。金钱是一个数字,因此使用数字来表示它会更有意义。精度应该不是问题,因为“浮点数通常使用C中的double实现”,这意味着$ 0.00 - $ 0.99之间不存在任何舍入问题

资源:https://docs.python.org/2/library/stdtypes.html