- 締切済み
整数と小数点の計算で結果が間違っている
初歩的な質問ですみません。 Actionscript2.0でテキストに入力した変数同士を 引き算するだけの簡単な処理なのですが 下記の値を入れて計算するととんでもない結果が出るので 誰かお分かりの方がいらっしゃったら教えてください。 よろしくお願いします。 計算結果 107.1-106=1.09999999999999 ※なぜ1.1にならないのでしょう…
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#1 の方と同意見で,#1 の方のURLをみていませんが...。 たいていの言語やソフトでそんな感じの現象は起こりますよ。 107.1-106=1.09999999999999 10倍する。 → 1071-1060=11 10で割る → 11/10 = 1.1 こんな感じにすれば良いのでは?
- himajin100000
- ベストアンサー率54% (1660/3060)
仕様でしょう。 0.1はIEEE754の単精度小数点数/倍精度浮動小数点数で正しく表現できず, 丸め誤差が発生するから。 http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml これはActionScriptに限らず, Excelでも発生するし, http://support.microsoft.com/kb/78113/ja 僕の手元のC#って言語でもそうなった。 #ActionScriptにCurrencyやDecimalのような十進数扱いの数字があるかは不明。
補足
さっそくご回答をありがとうございます。 こんなに早く対応していただいて感謝しております。 実は、お客様向けに 取引の売買のシミュレーションツールを作成しておりまして それを元にお客様が実際に資金を用意していただくこともあるので お金が絡む分、きちんと正確なものを作らなければならないため 誤差が発生するとなると、もしかしたら作らないほうが よいのかと思い始めてしまいました。 実際、計算ツールで小数点までしっかり計算させるツールは フラッシュでは作らないほうがよいのでしょうか? 重ね重ねすみません。 よろしければご回答をお待ちしております。
お礼
ありがとうございました! 一旦、整数にしてから計算する方法ですよね。 私もあとからこの方法に気づきました。 ご丁寧に解説までしていただいてありがとうございます。 お礼が遅くなってすみません。 ポイントの手持ちがないみたいで お渡しすることができずにすみません。 心から感謝いたします。