ここから本文です

Java の四則演算で「10 / 3.0」を実行すると結果が3.3333333333333335 となります...

ika********さん

2015/6/2922:37:39

Java の四則演算で「10 / 3.0」を実行すると結果が3.3333333333333335 となりますが、最後の桁が5になるのはなぜでしょうか?切り捨てでも切り上げでも5にはなりませんよね。

閲覧数:
145
回答数:
3

違反報告

ベストアンサーに選ばれた回答

nic********さん

2015/6/3001:01:17

一言で言うなら、コンピュータは10進数ではなく、2進数でデータを処理するからだ。

1/2, 1/(2*2), 1/(2*2*2), 1/(2*2*2*2), ... と計算すると分かるが、最小桁は常に5になる。
浮動小数点数の詳細な定義はさほど難しくもなく、一度調べるといい勉強になるので、IEEE 754で検索するといい。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

Clearさん

2015/6/3012:59:19

floatやdouble型で計算させるとそうなります。
先の方もおっしゃているように、2進数で計算しているからです。要は妥協点です。

そして環境によっても異なります。
(高速で計算できるが、画像表示等の「近似値」が解ればよく、厳密な計算がいらないときに用いるべき)

お金の計算等、厳密な計算をさせるにはBigDecimal等を使う必要があるそうです。

例)float型で0.01に0~100を掛けて出力させた場合
for(int i = 0; i <100 ; i++){
float a = 0.01f;
System.out.println((float)a*i);
}
(私の環境での実行結果)
0.0
0.01
0.02
0.03
0.04
0.049999997
0.06
0.07
0.08
0.089999996
0.099999994
0.11

とっぽさん

2015/6/2922:38:32

小数点の演算では誤差が発生するからです。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる