知りたいこと
- float型やdouble型の数値を用いて計算した結果の誤差について
- 誤差が出る理由や要素
コード
どれも(8.2*100)の結果を出力するだけの簡単なプログラム
- C#
URL: https://paiza.io/projects/C1ogl-OOBCRWlIfK-22f2A
結果: 820
- PHP
URL: https://paiza.io/projects/HUoUawGobikaCaNU_iPJFw
結果: 820
- JavaScript
URL: https://paiza.io/projects/NGOJmJDTx3sPnU_-MwD7GA
結果: 819.999...
- Java
URL: https://paiza.io/projects/AV2kgDYU2atpUD6X8ZEuXQ
結果: 819.999...
質問
上記の結果を見てほしいのですが、8.2*100 をいくつかの言語で計算させたところ、
- C#,PHP -> 820
- JavaScript,Java -> 819.999...
という結果になりました。
各言語の標準的な仕様としては、浮動小数点数はIEEE754という規格に準拠しているようなので、
自分の浅はかな考えでは結果に違いが出ないものだと考えていました。
しかし、そんなことはないと言うことが上で実証されているので、「この違いは一体何によって生じるものなのだろうか?」
というのを知りたい所存です。
もちろん、動作環境に依存することもあると思いますが、自身の知見を広げるためという意味でも、
そのようなものも含め「こういうことが考えられるよ」というのがあったらご回答願います。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/03 09:25
2019/03/03 09:31