基本上我正在考慮浮點數或字符串。什麼是JSON API中最好的格式/類型
字符串:
"10.00"
"10.05"
"10.50"
"1,000"
浮點數
10
10.05
10.5
1000
我喜歡絃樂的格式,而且有可能與浮點數精度有限的問題。
你會選擇什麼,爲什麼?
基本上我正在考慮浮點數或字符串。什麼是JSON API中最好的格式/類型
字符串:
"10.00"
"10.05"
"10.50"
"1,000"
浮點數
10
10.05
10.5
1000
我喜歡絃樂的格式,而且有可能與浮點數精度有限的問題。
你會選擇什麼,爲什麼?
使用花車。金錢是一個數字,因此使用數字來表示它會更有意義。而且精度不應該是一個問題,因爲這意味着將不會有$ 0.00間的任何四捨五入問題「浮點數使用C中的雙通常實行」 - $ 0.99
你永遠不應該使用浮動/雙錢。原因是他們在處理金錢時沒有做到你想要的。
簡單的例子,我得到10美分,然後我得到另一個10美分,然後我買了20美分的東西。剩下多少錢? (使用交互式Python提示符來說明)
>>> 0.1 + 0.1 - 0.2 == 0
True
現在讓我們嘗試用3次助攻同樣的事情,買了30美分的東西:
>>> 0.1 + 0.1 + 0.1 - 0.3 == 0
False
的原因當然是浮動/ double類型不能完全代表所有值。當你操縱這些數字時,你可能會積累這些錯誤,以便它真正變得明顯。所有使用float/double的編程語言在某種程度上都存在這個問題。
您最終將通過實現稱爲「isAlmostZero」和「isCloseTo」或其他一些愚蠢功能的函數修復錯誤。是的,我一直在使用這樣的系統。
This link也有一些解釋什麼浮/雙是一個壞主意。
現在,如果您可以將它們作爲JSON中的浮點數,並且不會將它們翻譯爲您的編程語言中的float/double,那麼它可能沒問題,但是您仍然沒有使用float/double作爲數據類型,只是看起來像它的東西,並轉化成不同的東西。我想大多數JSON解析器會將它變成浮點值,如果你這樣輸入的話。
取決於你想要做什麼 – Steve