より大きい値を保持している文字列から、二重の解析:1.7976931348623157E308
すべての言及値については、次のJavaコードを考えてみましょうDouble.MaxValue
String toParse = "1.7976931348623157E308"; //max value of a double in java
double parsed = Double.parseDouble(toParse);
System.out.println(parsed);
することは理にかなっていると、一つは正しい出力を取得します。
1.7976931348623158E308
(末尾の数字がE
より前になる)を解析しようとすると、最大値がコンソールに表示されます。
1.7976931348623159E308
を解析しようとした後で(やはり最後の桁が増えた)、大きい方がInfinity
になります。
対応する負の値についても同様の動作です。
なぜ... 8E308
は... 7E308
に解析され、Infinity
ではないのですか?
これはアプリケーションと関連性がありますか? – AlexWien
私は、あなたがエッジケースで楽しいことをしていると思います。あなたはソースコードを見ましたか? –
@AlexWienがちょうど "事故"でこれを見つけました、今私は好奇心です –