Javascriptで
<SCRIPT language="JavaScript"><!--
function wa()
{
a = eval( document.myFORM.a.value );
b = eval( document.myFORM.b.value );
s = a + b;
document.myFORM.kotae.value="答え " + s;
}
//--></SCRIPT>
</HEAD>
<BODY>
<FORM name="myFORM">
A =<INPUT type="text" name="a" size="3">B =<INPUT type="text" name="b" size="3"><BR>
<INPUT type="text" name="kotae"><INPUT type="button" value="=" onclick="wa()">
</FORM>
</BODY>
としたとき
A=0.1 B=0.05とすると
答え 0.15000000000000002となるのはなぜですか?
No.1ベストアンサー
- 回答日時:
Javascriptが内部処理に[浮動小数点]方式をを使っているからです。
[浮動小数点]は、近似値を答として出力するという特徴があります。
誤差が出るので、計算を繰り返すと、誤差は大きくなっていきます。
Javascriptが内部で、答えが 0.51 等と表示される場合でも、
内部処理を[浮動小数点]で行い「丸み」をつけている
(小数点の表現を四捨五入のようにする)だけの場合が多いです。
誤差がなくなるわけではないので、
正確性を要する計算では、[固定小数点]をつかいます。
もっとも、自分で処理方法を考えなくてはならないので大変です。
2進数で小数を表現する場合[固定小数点](通常の小数)を使うと、
オーバーフローを起こしやすい(桁の小さい表現しかできない)
という、決定的な欠点があります。
そのため、天文学の物理演算などの計算ができません。
なら、正確性よりも桁の多い計算ができたほうが…
という理由で、
高等言語やスクリプトのほとんどが[固定小数点]をつかいます。
[浮動小数点]では、
テクニックによって誤差を少なくできる方法がいくつかありますので、
頑張ってみにつけてください。
参考[浮動小数点]↓
http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95% …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンと連動して文字列...
-
ユーザーフォームでの検索結果...
-
value内に変数を入れたい
-
Pythonで会員サイトの自動ログ...
-
複数のsubmitボタンで押された...
-
javascriptでhiddenに二次元配...
-
scriptによる読み込みのselect表示
-
プルダウンの値とJavaScript
-
CDOMailで本文テキストの文字コ...
-
プルダウンメニューに連動するd...
-
[Javascript]TEXTAREAで改行さ...
-
プルダウンから移動時のフレー...
-
プルダウン選択時、既に入力済...
-
Jqueryを使って値の合計を簡単...
-
VB.NET DateTimeの型について
-
選択フォームへの追記について
-
ダミーフォームの内容を送信用...
-
return trueとreturn falseの用...
-
チェックボックス付きのテーブ...
-
1つのページにformを2つ設置。2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
UART通信の取説で,left floati...
-
javascriptでhiddenに二次元配...
-
hiddenのvalueの値を変えたい
-
VB.NET DateTimeの型について
-
テキストボックスに入力された...
-
CDOMailで本文テキストの文字コ...
-
setIntervalの間隔を途中で変更...
-
javascriptにてHTMLのhiddenエ...
-
ラジオボタンの選択で解答・点...
-
子から親へチェックボックスの...
-
フォームで入力した値を別のフ...
-
複数のsubmitボタンで押された...
-
selectboxのoptionタグのvalue...
-
Pythonで会員サイトの自動ログ...
-
クイズ作成:15個の問題から5個...
-
どのボタンがクリックされたの...
-
eval()を使わずに数値を取得し...
-
VBAをJavaScriptに変換したいです
-
ホームページビルダーのスクリ...
おすすめ情報