質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1037閲覧

JavaScriptでの税込計算がうまくいかない

m1nu

総合スコア5

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/25 08:57

編集2021/10/25 09:20

JavaScriptで税込計算方法を勉強しています。

下記HTMLを書き、税込み計算をしたいのですが、
例として上から100円、10%と入力すると、
計算結果に110.00000000000001と出力されます。
他の数字を入力しても同じようなことになります。

コードのどこが間違っているのか自分で見直してもわかりませんでした。
どこがおかしいのかご指摘頂きたいです。よろしくお願いします。

<body> <h1>簡単計算機</h1> <hr> <h2>収支計算</h2> <form name="form1"> <h2>消費税計算</h2> <p>本体金額&nbsp;<input type="text" value="0" class="right" name="text1">円</p> <p>消費税率&nbsp;<input type="text" value="0" class="right" name="text2">%</p> <p>税込金額&nbsp;<input type="text" value="0" class="right" name="text3" onfocus="document.form1.text3.value=document.form1.text1.value*(1+document.form1.text2.value*0.01);">円</p> </form> </body>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2021/10/25 08:58

それで何がわからないのでしょうか。
tkturbo

2021/10/25 09:03 編集

???税込金額欄にフォーカスしたら自動計算してません???
BeatStar

2021/10/25 09:21

横着せずに、普通の関数を作ってそれを呼び出した方が分かりやすいかも。 (読めなくはないが、説明がしづらい…)
guest

回答1

0

ベストアンサー

計算論理が間違っているわけではなく、コンピュータが内部で2進数を扱っている為に発生する問題です。
なので、こういう問題が発生することを織り込んだコードを書く必要があります。
(なるべく小数同士の計算は避けるようにします。)

html

1<body> 2 <h1>簡単計算機</h1> 3 <hr> 4 <h2>収支計算</h2> 5 <form name="form1"> 6 <h2>消費税計算</h2> 7 <p>本体金額&nbsp;<input type="text" value="0" class="right" name="text1"></p> 8 <p>消費税率&nbsp;<input type="text" value="0" class="right" name="text2">%</p> 9 <p>税込金額&nbsp;<input type="text" value="0" class="right" name="text3"></p> 10 </form> 11 12 <script> 13 const text1Field = document.querySelector("input[name=text1]"); 14 const text2Field = document.querySelector("input[name=text2]"); 15 const text3Field = document.querySelector("input[name=text3]"); 16 17 text3Field.addEventListener("focus", (event) => { 18 const amount = Number.parseInt(text1Field.value); 19 const tax = Number.parseInt(text2Field.value); 20 const result = Math.round(((amount * 100) + (amount * tax)) / 100); 21 22 text3Field.value = result; 23 }); 24 </script> 25</body>

投稿2021/10/25 09:27

KAOsaka

総合スコア531

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問