consideri il seguente codice Java:Parsing un letto da una stringa che contiene un valore maggiore di Double.MaxValue
String toParse = "1.7976931348623157E308"; //max value of a double in java
double parsed = Double.parseDouble(toParse);
System.out.println(parsed);
Per il valore indicato di 1.7976931348623157E308
tutto senso e si ha l'uscita corretta.
Ora, se si tenta di analizzare 1.7976931348623158E308
(l'ultima cifra prima di E
incrementata) si ottiene ancora il valore massimo stampato nella console!
Solo dopo aver provato a analizzare 1.7976931348623159E308
(anche in questo caso l'ultima cifra è stata incrementata) e una maggiore diventa Infinity
.
Stesso comportamento per i corrispondenti valori negativi.
Perché ... 8E308
è stato analizzato a ... 7E308
e non Infinity
?
Ha rilevanza per qualsiasi applicazione? – AlexWien
Immagino che ti stia divertendo con i casi limite. Hai guardato il codice sorgente? –
@AlexWien si è appena imbattuto in questo "incidente", ora sono curioso –