自分は今javaの勉強をしているのですがわからないことがあります。long d = 123456789L;float e = d;System.out.println(d);System.out.println(e);の実行結果が1234567891.2345679E8と異なる結果になるのはなぜですか?初歩的な質問で申し訳ありませんが教えていただけると幸いです

Java

1件の回答

回答を書く

1159169

2026-02-12 05:10

+ フォロー

他の方も書かれていますが計算精度の問題とlongとfloatの文字列化手法の違いの問題です。



例えば最初の代入を

logn d = 1234567L;



とすればどちらも同じような表示になるでしょう。

また、



long d = 12345678L; //8までね

float e = d;

System.out.printf(\u0026quot;%d\
\u0026quot;, d);

System.out.printf(\u0026quot;%f\
\u0026quot;, e);



とした場合も同じ感じ。

ただし、最初の代入を123456789Lとすると、変んな値が出てきます。

これは、コンピュータにおけるデータの持ち方が2進数なので、少数以下の値は10進数とは違ってくるためです(なおこれで正常動作)。

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有