2011-01-05 15 views
1

私は簡単なJavaScript計算に問題があります。私の書類は$ 25以下であれば$ 1.50を注文に追加し、$ 25以上であれば注文の10%を追加する予定です。正確な問題は次のとおりです。シンプルな送料と計算の計算を行うJavaScriptで

多くの企業では、通常、購入の際に送料と手数料を請求します。ユーザーがテキストボックスに購入価格を入力できるWebページを作成し、出荷と処理を計算するJavaScript関数を組み込みます。 $ 25.00以下の購入に対しては、最低送料と手数料を1.50ドル追加する機能をスクリプトに追加します。 $ 25.00以上のご注文の場合は、送料と手数料の合計購入価格の10%を加算しますが、最低$ 1.50の送料と手数料は含まれていません。パーセンテージを計算するための計算式は、価格*パーセント/ 100です。たとえば、$ 50.00の購入価格の10%を計算する式は50 * 10/100で、送料と手数料は$ 5.00になります。注文の合計原価(購入+出荷と処理)を決定したら、警告ダイアログボックスに表示します。

この

は私のコードです:

var price = window.prompt("What is the purchase price?", 0); 
var shipping = calculateShipping(price); 
var total = price + shipping; 
function calculateShipping(price){ 
if (price <= 25){ 
return 1.5; 
} 
else{ 
return price * 10/100 
} 
} 
window.alert("Your total is $" + total + "."); 

私は、プロンプトボックスに数値を入力してテストして、代わりに私は、文字列を入力するかのように算出し、番号を入力したかのように計算します。つまり、私は19を入力し、それは私に191.5を与えるか、私は26を入力し、それはあなたが簡単に

http://www.javascripter.net/faq/convert2.htm

は基本的にJSがのparseIntとparseFloatは方法を提供して文字列を数値に変換することができます私の262.6

+0

プロンプト入力を数値に変換するには、 'parseInt'を使用します。 money値の場合は、http://www.w3schools.com/jsref/jsref_parseint.asp –

+0

'parseInt()'?ナア。 – Dutchie432

+0

@Dutchie - 技術的には、お金の価値をintとして扱うほうが良い。私。あなたが表示したい時にそれをセンテンス(またはペンス - 私は英語です)として保管し、次に部門を行います。 –

答えて

2

がお手伝いします::

var price = parseFloat(window.prompt("What is the purchase price?", 0)) 
var shipping = parseFloat(calculateShipping(price)); 
var total = price +shipping; 
function calculateShipping(price){ 
if (price <= 25){ 
return 1.5; 
} 
else{ 
return price * 10/100 
} 
} 
window.alert("Your total is $" + total + "."); 

はそれがで働いて参照してください。

また、これを行うのあまり知られていない置くよりパフォーマンスの方法は、単に-0に次のようになります。

var price =window.prompt("What is the purchase price?", 0) - 0; 

(参照:Is Subtracting Zero some sort of JavaScript performance trick?)をそのないようものの

は、このコメントにしてくださいparseFloat

+0

あなたはそれに私を打つ! gj! – Dutchie432

+0

ありがとうございました!私はparseFloat()とparseReal()について知っていましたが、それらを使う方法がわかりませんでした。 – Nicole

+0

心配はいりません。それを受け入れるか(ダニをクリックしますか?) –

0

を与えます... parseFloatを使用して

0

冗長な乗算のビットですが、入力されている数字が数字ではなく文字列として扱われるという問題があります。あなたは浮動小数点数に変換する必要があります。

var price = parseFloat(window.prompt("What is the purchase price?", 0)); 
var shipping = calculateShipping(price); 
var total = price + shipping; 

function calculateShipping(price) 
{ 
    if (price <= 25) 
    { 
    return 1.5; 
    } else { 
    return price/10 
    } 
} 

window.alert("Your total is $" + total + "."); 
0
var price = parseFloat(window.prompt("What is the purchase price?", 0)); 
var shipping = calculateShipping(price); 
var total = price + shipping; 
function calculateShipping(price){ 
    var num = new Number(price); 
    if (num <= 25){ 
    return 1.5; 
    } else{ 
    return num * 10/100 
    } 
} 
window.alert("Your total is $" + total + "."); 

これはあなたのためにそれを行う必要があります。

+0

なぜこの行を追加するのか不思議です:var num = new Number(price); – Nicole

+0

主な理由は、引数の検証(浮動小数点が渡されると仮定しない)です。別の理由は、出荷価格の計算に数値変数を使用することです。 –