• ベストアンサー

evalの計算結果について

OSはWindows、ブラウザはIE4.0です。 以下のJavaScriptを実行すると、答えとして0.1を期待しているのですが、 s=0.09999999999999964 となります。どうしたら期待通りの答えがでるのでしょうか。 よろしく御回答お願いいたします。 <script language="JavaScript"><!-- スクリプト開始 s=eval("10.18-10.08"); document.write("s="+s); // スクリプト終了。 --></script>

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

原因は ykc さんが書かれた通り。 計算上の誤差はあまり気にせずに、体裁を整えたいだけであれば、 参照URLに示したところに、javascript で使える printf() の コードがあるので、それを使うと良いかも。

参考URL:
http://www.goice.co.jp/member/mo/amuse/javascript/expert/
rero2
質問者

お礼

ありがとうございました。 僕のせいじゃないんですね。それが解って安心。 でも、evalよ、JavaScriptよ、それでいいのかっと思いまーす。 アキラメがつきました。printfあたってみますぅ。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ykc
  • ベストアンサー率29% (28/95)
回答No.1

小数点計算は2進数<->10進数の変換のとき、丸め込みの誤差がでます。 小数点無しで計算し、最後に割って表示させるのがわりと一般的だとおもいます。 ex) s=eval(1018-1008); document.write("s=" + (s/100));

rero2
質問者

お礼

ありがとうございました。 僕のせいじゃないんですね。それが解って安心。 でも、evalよ、JavaScriptよ、それでいいのかっと思いまーす。 アキラメがつきました。printfあたってみますぅ。

すると、全ての回答が全文表示されます。

関連するQ&A