-PR-
解決済み

evalの計算結果について

  • 困ってます
  • 質問No.57936
  • 閲覧数117
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 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>
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル14

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

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

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

お礼率 100% (25/25)

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

その他の回答 (全1件)

  • 回答No.1
レベル9

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

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

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

お礼率 100% (25/25)

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


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ