2011-04-23 6 views
1

저는 텍스트 필드에서 숫자 입력을 받아들이고 몇 가지 방정식을 통해이를 실행하는 JavaScript를 작성하고 있습니다. 이 방정식은 곱하기, 빼기, 더하기, 나누기 및 지수를 사용합니다. 지금까지의 모든 테스트는 JavaScript가 숫자 텍스트 입력 (유형 문자열)을 유형 번호로 변환하고 방정식 결과를 올바르게 계산하고 있음을 나타냅니다. 묵시적으로 입력 값을 유형 문자열에서 유형 번호로 변환하기 위해 JavaScript를 계속 신뢰해야합니까? 아니면 parseFloat()를 사용하여 각 입력 값을 명시 적으로 변환해야합니까?JavaScript에서는 parseFloat를 호출하여 문자열을 부동 소수점 숫자로 변환해야합니까? 아니면 JavaScript에서 변환 할 수 있도록해야합니까?

제공되는 조언이나 통찰력에 미리 감사드립니다.

편집 : 명확히하기 위해 입력을 가져 와서 정수인지 확인합니다. 입력 값이 정수가 아니면 경고가 표시되고 계산이 수행되지 않습니다. 입력 값이 정수인 경우 입력이 즉시 곱 (0.01 * value)되거나 지수에 적용된 수식을 통해 실행됩니다 (Math.pow (value, 2)). 이것은 두 개의 개별 입력에 대해 두 번 수행됩니다. 다른 방정식은 처음 두 방정식의 결과를 가져 와서 즉시 나누어줍니다 (0.5/값). 이러한 작업을 감안할 때 묵시적인 변환이 안전합니까?

답변

3

명시 적으로 확실하지 당신이보고되지만 명시 적으로, 당신의 문자열 입력 지점을지나 문자열을 유지 수 있고 실수로 어떤 시점에서 문자열로 사용)에서는 parseFloat를 (사용하지 않는 경우 정말

var a = "1"; 
var b = 2; 

a + b = "12" 
b + a = "21" 
+0

감히 결과를 업데이트했습니다. 이러한 추가 사항은 결국 귀하의 답변에서 분명하지 않은 문자열로 끝납니다. –

+0

Rob. 맞습니다. 업데이트 한대로 노드 콘솔에서 내 사본과 붙여 넣기가 작동을 멈추었습니다. All good : D –

+0

숫자와 문자열과 함께 '+'연산자를 사용하면 연결됩니다. 그러나'-','*'및'/'는 문자열을 숫자로 암시 적으로 변환하는 데 사용할 수 있습니다. 추가는'(+ 1 1) + 2'을 사용할 수 있습니다. (괄호가 있거나 없거나) – tcooc

2

작동하지 않습니다 나중에 코드에서 연결 또는 기타 실수로 문자열 연산이 발생합니다.

또한 입력이 잘못 작성되면 parseFloat()가 테스트 할 수있는 NaN을 반환합니다.

float가 필요하면 parseFloat()를 사용하십시오.

3

parseFloat은 float.ie 뒤에 문자를 무시하고 문자가 포함될 경우를 제외하고는 암시 적으로 변환하면 parseFloat을 사용하는 것과 동일한 효과가 있습니다.

(+"12.5") == parseFloat("12.5"); // true 

isNaN(+"a12.5") == true; 
isNaN(parseFloat("a12.5")) == true; 

그러나
(+"12.5s"); // is NaN but 
parseFloat("12.5s") == 12.5; 

그래서 당신이 수용하고 입력의 유형에 따라 달라집니다.

관련 문제