• ベストアンサー
  • 困ってます

evalの計算結果について

  • 質問No.57936
  • 閲覧数134
  • ありがとう数4
  • 回答数2

お礼率 100% (25/25)

OSはWindows、ブラウザはIE4.0です。
以下のJavaScriptを実行すると、答えとして0.1を期待しているのですが、
s=0.09999999999999964
となります。どうしたら期待通りの答えがでるのでしょうか。
よろしく御回答お願いいたします。

<script language="JavaScript"><!-- スクリプト開始
s=eval("10.18-10.08");
document.write("s="+s);
// スクリプト終了。 --></script>

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 50% (1122/2211)

原因は ykc さんが書かれた通り。

計算上の誤差はあまり気にせずに、体裁を整えたいだけであれば、
参照URLに示したところに、javascript で使える printf() の
コードがあるので、それを使うと良いかも。
お礼コメント
rero2

お礼率 100% (25/25)

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

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 29% (28/95)

小数点計算は2進数<->10進数の変換のとき、丸め込みの誤差がでます。
小数点無しで計算し、最後に割って表示させるのがわりと一般的だとおもいます。

ex)
s=eval(1018-1008);
document.write("s=" + (s/100));
お礼コメント
rero2

お礼率 100% (25/25)

ありがとうございました。
僕のせいじゃないんですね。それが解って安心。
でも、evalよ、JavaScriptよ、それでいいのかっと思いまーす。
アキラメがつきました。printfあたってみますぅ。
投稿日時:2001/04/02 08:43
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ