Ich lese aus einer JSON-Datei mit Jsoncpp. Wenn ich in die Datei zurückschreibe, sind meine Gleitkommawerte etwas aus. Aus Gründen des Testens entschied ich, die Datei zu einem Json :: Value zu analysieren und diesen Wert dann wieder in die Datei zu schreiben. Ich würde erwarten, dass es gleich aussieht, aber stattdessen sind die Float-Werte unterschiedlich.Jsoncpp Float Werte falsch schreiben
Beispiel:
"Parameters":
{
"MinXValue": 0.1,
"MaxXValue": 0.15,
"MinYValue": 0.25,
"MaxYValue": 1.1,
"MinObjectSizeValue": 1
}
schreibt:
"Parameters":
{
"MinXValue": 0.10000000000000001,
"MaxXValue": 0.14999999999999999,
"MinYValue": 0.25,
"MaxYValue": 1.1000000238418579,
"MinObjectSizeValue": 1
}
Sie fest, dass 0,25 nicht ändern, auch wenn alle anderen Schwimmer tat. Irgendeine Idee, was hier vor sich geht?
Einige Gleitkommawerte können im Binärformat genau dargestellt werden, andere nicht. Was Sie sehen, ist die engste Darstellung Ihrer Werte. –
Fließkommazahlen sind nicht präzise. Sie sind die beste Darstellung in der begrenzten Erinnerung. PS 0.25 ist ein Viertel - Summat, das mit binärem Arbeiten zu tun hat ;-) –
Danke für die Klarstellung. Gibt es das überhaupt, um das zu vermeiden? – SFBA26