2011-01-05 3 views
1

간단한 JavaScript 계산에 문제가 있습니다. 내 문서는 $ 25 이하인 경우 주문에 $ 1.50을 추가하거나 $ 25 이상인 경우 주문의 10 %를 추가합니다. 정확한 문제는 다음과 같습니다.간단한 배송 및 계산 계산을 수행하는 JavaScript에서

많은 회사는 일반적으로 구매시 운송 및 취급 수수료를 부과합니다. 사용자가 텍스트 상자에 구매 가격을 입력 할 수있는 웹 페이지를 만들고 배송 및 처리를 계산하는 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'를 사용하십시오. http://www.w3schools.com/jsref/jsref_parseint.asp –

+0

돈 값에 대해'parseInt()'? Naaah. – Dutchie432

+0

@Dutchie - 기술적으로 돈 가치를 int로 처리하는 것이 더 좋습니다. 나는. 센트 (또는 펜스 - 저는 영어입니다)로 저장 한 다음 표시하고자 할 때 부서를 수행하십시오. –

답변

2

parseFloat를 사용하면 도움이 될 것입니다 :

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 + "."); 

가에서 일을 참조 :를 또한3210

, 단순히 -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

중복 곱셈 비트이지만 입력되는 숫자는 숫자가 아니라 문자열로 처리된다는 점이 문제입니다. 당신은 부동 소수점 숫자로 변환 할 수 있습니다

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

주된 이유는 인수 유효성 검사 (float가 전달된다고 가정하지 않음) 때문입니다. 또 다른 이유는 운송비의 계산에 숫자 변수를 사용하는 것입니다. –

관련 문제