Q&A
解決済
2回答
2116閲覧
総合スコア1
浮動小数点は、コンピュータが数値を扱う際に実数を表現する方法のひとつです。 数値を、それぞれの桁の値が並んでいる仮数部と、小数点の場所を示す指数部で表します。
0グッド
0クリップ
投稿2020/05/28 02:21
0
浮動小数点についての質問なのですが、 0.1を10回加算した時の値(演算結果0.9999…)と、10を乗算した時の値(演算結果1.0)が異なっていました。
浮動小数点は0.1を正確には表せないため、演算結果は共に(0.999…)になってもおかしくないと思ってるのですが、乗算した時はどうして1になっているのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答2件
演算回数が多いほど誤差が積み重なっていきます。
加算が「10回」と乗算が「1回」であれば、1回で済む乗算のほうが誤差が出づらいです。
投稿2020/05/28 02:26
総合スコア146853
ベストアンサー
偶然です。
0.1は2進数では無限小数になるため、一般的な浮動小数点数(IEEE倍精度)で表そうとすると正しい値より僅かに大きい「0.00011001100 ... 001101」となります。 これに10を掛けると「1.000 ... 001」になりますが、丸めの際に切り捨てられ、正しい計算結果より僅かに小さい「1」になります。
2進変換と乗算の誤差が偶然打ち消し合って、奇遇にも誤差が無かったかのような値が出ているだけです。 値によってこのようになることもありますし、ならないこともあります。
投稿2020/05/28 13:16
総合スコア3047
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
浮動小数点の加算と乗算の違いについて
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。