我正在使用jsoncpp從JSON文件中讀取數據。當我回寫該文件時,我的浮點值稍微偏離。爲了測試,我決定將文件解析爲Json :: Value,然後將該值寫回文件。我希望它看起來一樣,但是浮動值是不同的。Jsoncpp錯誤地寫入浮動值
例子:
"Parameters":
{
"MinXValue": 0.1,
"MaxXValue": 0.15,
"MinYValue": 0.25,
"MaxYValue": 1.1,
"MinObjectSizeValue": 1
}
這樣寫道:
"Parameters":
{
"MinXValue": 0.10000000000000001,
"MaxXValue": 0.14999999999999999,
"MinYValue": 0.25,
"MaxYValue": 1.1000000238418579,
"MinObjectSizeValue": 1
}
你可能會注意到,0.25沒有改變,即使其他所有的花車一樣。任何想法這裏發生了什麼?
某些浮點值可以用二進制精確表示,有些浮點值不能。你所看到的是你的價值觀的最接近的表現。 –
浮點數不準確。他們是有限記憶中的最佳表現。 PS 0.25是與二進制工作相關的四分之一summat ;-) –
感謝您的澄清。無論如何要避免這種情況? – SFBA26