浮動小数点数の精度に関する別の質問から生じた質問があります。
現在、浮動小数点は常に正確に表現できるとは限らないため、表現可能な最も近い浮動小数点数として格納されることがわかっています。
私の質問は、実際には と の表現の違いについてfloat
ですdouble
。
この質問はどこから生じますか?
私がそうするとします:
System.out.println(.475d+.075d);
その後、出力は(私のマシンでは)そう0.55
ではありません0.549999
しかし、私がするとき:
System.out.println(.475f+.075f);
私は正しい答えを得る、つまり0.55
(私にとっては少し予想外でした)
これまで、私はdouble
より精度の高い印象を受けていました ( double は小数点以下の桁数が長くなるまでより正確になります) float
。したがって、double を正確に表現できない場合、同等の float 表現も不正確に格納されます。
しかし、私が得た結果は私にとって少し気がかりです。次の場合は混乱します。
precision
私は何を意味するかについて間違った理解をしていますか?float
double がより多くのビットを持ってdouble
いるという事実を除けば、表現方法は異なりますか?