2017-11-25 9 views
0

프로그램을 만들려고하는데 뭔가 잘못되었습니다. 나는 단순한 세금 프로그램을하고 싶다. 여기서 X 금액의 세금을 포함한 총 가격을 계산하고있다. JavaScript에서 prompt 명령을 사용하여 값을 입력하고 싶습니다. 내가 값으로 진수를 추가 할 때까지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이 표시됩니다. 누구든지 설명을 받았는데 어떻게 해결할 수 있습니까?

+1

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.');

당신은 입력하지 숫자에서 문자열을 얻을. 그러나 재무 계산을 할 때 ** 정수 ** 만 사용해야합니다! 달러 대신 센트로 계산하십시오! 정수는 신뢰할 만하지만 부동 소수점 값은 신뢰할 수 없습니다! _ 분수로 재정 수학을하지 마십시오. 누구나 당신이하고있는 일을 토대로 모든 접근 방식이 나쁘다고 말하는 대신 잘못된 해결책을 제시하는 해결책을 제시합니다. 링크 : 1) https://stackoverflow.com/q/3730019/544779 ------ 2) https://stackoverflow.com/q/2876536/544779 –

+0

물론 Mörre는 맞지만 이것이 숙제의 초급 질문. 이것은 생산적인 금융 응용 프로그램이 아닙니다. –

+0

예, 이해합니다. 그러나 저는 초급이며, 숙제로 생각합니다. :) 하지만 지금은 또 다른 질문이 있습니다. 내가 아는 한 JavaScript에서는 integer 나 float과 같은 생각이 없습니다. 예를 들어 Java와 같습니다. 우리는 JS에서 모든 숫자가 십진수라고 들었습니다. 그 맞습니까? –

답변

0

당신은 parseFloatparseInt와 숫자로, 문자열로 해석됩니다 prompt에서 입력을 변환 할 수 있습니다

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에서 STRING이 :) 분석에서 그 문제가되지 볼 그런
당신이 (PROMT의 결과가 문자열, 그것은 ''10 .5하자) 결과는 float (자동 전환) = 0.525
그 다음에는 (총 = phonePrice + tax;) 결과가 STRING = "10.50.525"가됩니다. '+'연산자가있는 경우 결과가 STRING = "10.50.525"가됩니다. 인수 STRING - 모두 STRING으로 사용됩니다.

그리고 마지막으로 '*'로 나타납니다. 아무도 숫자 "10.50.525"를 알지 못하므로 :) float * NaN = NaN

입력 값을 변환 해보세요. 당신이 숫자로 변환 할 필요가 있으므로

+0

TY :) 매우 도움이되었습니다. 나는 모든 것을 지금 이해하고있다. –