Se ho bisogno di trasmettere numeri in virgola mobile esattamente da C# a JSON in Java, posso usare i numeri JSON?Le librerie JSON concordano su quale sia il valore a precisione doppia di .5000 ... 1?
In caso contrario, perché no? Quali informazioni potrebbero essere perse e come posso garantire di mantenerlo?
Per essere precisi, sto usando Json.NET in C# e Jackson (attraverso la sua classe ObjectMapper) in Java.
Sembra double.TryParse è ciò che viene infine utilizzato quando Json.NET analizza un numero da raddoppiare e Double.parseDouble è ciò che viene infine utilizzato quando Jackson ObjectMapper analizza un numero da raddoppiare.
Posso aspettarmi che Microsoft double.TryParse e Java Double.parseDouble concordino esattamente sul valore di ogni numero JSON?
Sono preoccupato perché il numero di cifre in un numero JSON non è limitato in ECMA-404, IETF RFC 7159 o json.org. Questa altra domanda (Maximum number of decimal digits that can affect a double) mi fa domandare quanto posso fidarmi di una credenza comune secondo cui il primo blocco di 17 cifre decimali (dopo aver scartato gli zeri iniziali), o in realtà qualsiasi numero limitato di cifre decimali, è sufficiente per determinare una precisione doppia valore in virgola mobile.
Non tutti si basano sulla precisione "doppia" se ciò è realmente importante (non importa per la maggior parte delle applicazioni, ma potrebbe esserlo in alcuni). Come implica il moniker 'double', la precisione è _finite_. Nei rari casi in cui ciò è importante, pensa di utilizzare una rappresentazione arbitraria di precisione dei numeri razionali. C'è anche matematica simbolica, sebbene sia di tipo ortogonale rispetto alla precisione, può o non può essere rilevante per quello che stai facendo. tl; dr il più delle volte non è una vera preoccupazione. se lo è, non usare il doppio. – Cubic