2017-11-25 35 views
0

私は自分のプログラムを作ろうとしていますが、何かが間違っています。私は単純な税プログラムをしたい、ここで私はアイテムのX量に税金を含む合計価格を計算しています。 JavaScriptのpromptコマンドを使って値を入力したいと思います。ここに私のコードは次のとおりです。私は値10進数を追加するまでJavaScriptのプロンプトで小数点を入力する方法は?

let phonePrice; 
 
let quantity; 
 
let tax; 
 
let total; 
 
let total2; 
 

 
phonePrice = prompt('Enter the phone price here...',''); 
 
quantity = prompt('Enter quantity here...',''); 
 
tax = phonePrice * 0.05; 
 
total = phonePrice + tax; 
 
total2 = quantity * total 
 

 
alert('The Price on ' + quantity + ' phones with tax included is ' + total2 + ' dollars.');

すべてが正常に動作します。数量は10進数ではありませんが、たとえば、商品価格は119.95ドルです。スクリプトに(プロンプトなしで)この番号を直接入力すると、すべて問題ありませんが、プロンプトを宣言してブラウザに同じ値を入力すると、数値ではない値としてNaNが返されます。誰でも説明がありますが、どうすればこの問題を解決できますか?あなたがparseFloatparseIntで、数に、文字列として解析されpromptからの入力を変換する必要があり

+1

あなたは入力されていない番号から文字列を取得するので、あなたは数に変換する必要があります。しかし、財務計算を行うときには**整数**を使うだけです!すべての計算をドルではなくセントで行います!整数は信頼でき、浮動小数点値は信頼できません! _Never_は分数で財務計算を行います。すべてのアプローチが悪いと言っているのではなく、あなたがしていることに基づいて解決策を提供する人は、それを間違って実行しています。リンク:1)https://stackoverflow.com/q/3730019/544779 ------ 2) https://stackoverflow.com/q/2876536/544779 –

+0

Mörreはもちろん正しいですが、これは次のようです宿題の初心者の質問です。これは生産的な金融アプリケーションではありません。 –

+0

ええ、私は理解していますが、私は初心者です。これは宿題です:)。しかし今、別の質問があります。私が知る限り、JavaScriptのように整数や浮動小数点のようなものはありません。例えば、Javaのようです。私たちは、JSではすべての数値が小数であると言われました。あれは正しいですか? –

答えて

0

let phonePrice; 
 
let quantity; 
 
let tax; 
 
let total; 
 
let total2; 
 

 
phonePrice = parseFloat(prompt('Enter the phone price here...','')); 
 
quantity = parseInt(prompt('Enter quantity here...','')); 
 
tax = phonePrice * 0.05; 
 
total = phonePrice + tax; 
 
total2 = quantity * total 
 

 
alert('The Price on ' + quantity + ' phones with tax included is ' + total2 + ' dollars.');

あなたの代わりにカウントすべきである、と述べましたあなたのお金はドルの代わりにセントで、浮動小数点精度のエラーを避けるために浮動小数点の代わりに整数を使用します。

+1

彼は財務計算に浮動小数点を使うべきではありません。どんな答えでも彼にそれを伝えるべきです。 –

1

ことはあなたのコードをデバッグしてみてください、あなたはいない解析でその問題を見ることができます:)

あなたが持っている次にphonePrice内の文字列(PROMTの結果は文字列であり、それは'10 0.5' であるとする)
を持っています'+'演算子であれば、結果はSTRING = "10.50.525"になります(もしあれば、+ = phonePrice + tax;)引数STRING - すべてがSTRINGとして使用されます

そして最後に '*'があります - 誰も数値 "10.50.525"を知らないので:)とfloat * NaN = NaNの結果

入力値を変換しようとしました。

let phonePrice; 
 
let quantity; 
 
let tax; 
 
let total; 
 
let total2; 
 

 
phonePrice = parseFloat(prompt('Enter the phone price here...','')); 
 
quantity = parseFloat(prompt('Enter quantity here...','')); 
 
tax = phonePrice * 0.05; 
 
total = phonePrice + tax; 
 
total2 = (quantity * total).toFixed(2); // Needed for correct result to money conversion 
 

 
alert('The Price on ' + quantity + ' phones with tax included is ' + total2 + ' dollars.');

+0

TY :)これは非常に役に立ちました。私は今すべてを理解している。 –

関連する問題