den folgenden Java-Code vor:ein Doppel aus einem String parsen, die einen Wert von mehr als Double.MaxValue halten
String toParse = "1.7976931348623157E308"; //max value of a double in java
double parsed = Double.parseDouble(toParse);
System.out.println(parsed);
Für den genannten Wert von 1.7976931348623157E308
alles macht Sinn, und man bekommt die richtige Ausgabe.
Jetzt, wenn man versucht, 1.7976931348623158E308
(letzte Ziffer vor E
inkrementiert) zu analysieren, erhalten Sie immer noch den Maximalwert in die Konsole gedruckt!
Nur nach dem Versuch zu analysieren 1.7976931348623159E308
(wieder die letzte Ziffer wurde inkrementiert) und größer bekommt man Infinity
.
Gleiches Verhalten für die entsprechenden negativen Werte.
Warum wird ... 8E308
geparst zu ... 7E308
und nicht Infinity
?
Hat das irgendeine Relevanz für irgendeine Anwendung? – AlexWien
Ich vermute, dass Sie Spaß mit Rand Fällen haben. Hast du den Quellcode angeschaut? –
@AlexWien ist gerade durch "Unfall" darauf gestoßen, jetzt bin ich neugierig –