• 締切済み

整数と小数点の計算で結果が間違っている

初歩的な質問ですみません。 Actionscript2.0でテキストに入力した変数同士を 引き算するだけの簡単な処理なのですが 下記の値を入れて計算するととんでもない結果が出るので 誰かお分かりの方がいらっしゃったら教えてください。 よろしくお願いします。 計算結果 107.1-106=1.09999999999999 ※なぜ1.1にならないのでしょう…

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1 の方と同意見で,#1 の方のURLをみていませんが...。 たいていの言語やソフトでそんな感じの現象は起こりますよ。 107.1-106=1.09999999999999  10倍する。  → 1071-1060=11    10で割る    → 11/10 = 1.1 こんな感じにすれば良いのでは?

boorzwrzw
質問者

お礼

ありがとうございました! 一旦、整数にしてから計算する方法ですよね。 私もあとからこの方法に気づきました。 ご丁寧に解説までしていただいてありがとうございます。 お礼が遅くなってすみません。 ポイントの手持ちがないみたいで お渡しすることができずにすみません。 心から感謝いたします。

回答No.1

仕様でしょう。 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のような十進数扱いの数字があるかは不明。

boorzwrzw
質問者

補足

さっそくご回答をありがとうございます。 こんなに早く対応していただいて感謝しております。 実は、お客様向けに 取引の売買のシミュレーションツールを作成しておりまして それを元にお客様が実際に資金を用意していただくこともあるので お金が絡む分、きちんと正確なものを作らなければならないため 誤差が発生するとなると、もしかしたら作らないほうが よいのかと思い始めてしまいました。 実際、計算ツールで小数点までしっかり計算させるツールは フラッシュでは作らないほうがよいのでしょうか? 重ね重ねすみません。 よろしければご回答をお待ちしております。

関連するQ&A