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 回答 (2件)

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



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

参考URL:http://www.goice.co.jp/member/mo/amuse/javascrip …
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/04/02 08:42

小数点計算は2進数<->10進数の変換のとき、丸め込みの誤差がでます。


小数点無しで計算し、最後に割って表示させるのがわりと一般的だとおもいます。

ex)
s=eval(1018-1008);
document.write("s=" + (s/100));
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/04/02 08:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ