2012-08-02 3 views
0

가능한 중복 :
Is JavaScript's Math broken?이상한 수학 계산

나는 여기에 자바 스크립트와 HTML 코드 my code

이 있고 난 때 계산 특정 필드 이상한 값을 가져옵니다. 하나의 체크 박스에는 현재 스크립트 (배경 음악 addon)가 있고 오직 3in 릴 중 하나를 추가 할 때만 총 가격이 24.990000000000002가됩니다. 그것은 단지 그 입력과 함께 그 이상한 것입니다 ... 그것은 단지 24.99 여야합니다 .... 모든 다른 입력 작업과 정확한 합계를 제공하지만, 단지 3 개의 3in 필드는 그 숫자를줍니다 ... 시행 착오를 통해 나는 문제는 3 자리수의 값에 의해 여기

regthreetot = parseFloat(regthree * 50); 
regfourtot = parseFloat(regfour * 100); 
regfivetot = parseFloat(regfive * 200); 
regsixtot = parseFloat(regsix * 300); 
regseventot = parseFloat(regseven * 400); 
supthreetot = parseFloat(supthree * 50); 
supfourtot = parseFloat(supfour * 100); 
supfivetot = parseFloat(supfive * 200); 
supsixtot = parseFloat(supsix * 300); 
supseventot = parseFloat(supseven * 400); 
sixthreetot = parseFloat(sixthree * 50); 
sixfourtot = parseFloat(sixfour * 100); 
sixfivetot = parseFloat(sixfive * 200); 
sixsixtot = parseFloat(sixsix * 300); 
sixseventot = parseFloat(sixseven * 400); 

regthree, supthree 및 sixthree 값 50 승산

... 모든 다른 값이 승산있다 ... 난 50~100 변경할 경우에는 줄 것이다 정상적인 대답 ... 왜 숫자가 중요합니까? 그리고 그것을 해결하기 위해 무엇을 할 수 있습니까?

+3

** 반드시이 **에 방법이 될 그 코드 조각을 단순화 ... – elclanrs

+0

def def is ... 나는 단지 어떻게 ... ... – user1556319

+1

[돈을 위해 수레를 사용하지 마십시오] (http://stackoverflow.com/questions/3730019/why-not) -use-double-or-float-to-currency) – Mat

답변

0

이것은 float 산술 연산 방식 때문에 발생합니다. 당신은 소수점 이하 2 자리로 반올림하여 작업 할 수 있습니다. (어쨌든 센트의 한 부분을 사용하지 않을 것입니다) : http://jsfiddle.net/vSsW9/1/

+0

놀랍고 멋진 작품입니다 ... 그 일을 할 수있는 다양한 방법이있어서 좋네! – user1556319

+0

ohh 만약 당신이 다시 볼 수있는 확인란이 다른 질문이 ... 그래서 기본적으로 확인란의 선택을 취소하지 않으면 (확인란을 눌러 확인란의 기능을 활성화하지 않습니다) 취소 버튼을 누릅니다. ..click 버튼에 넣을 수있는 특정 변수를 지우는 함수가 있나요? – user1556319

0

잘 알게 될 때까지 Math.Round를 사용하여 두 소수로 반올림 할 수 있습니다. 100 % 정확되지 않는 플로트 변수에 의한 것 result=Math.round(result*100)/100

+0

난 이미 내 코드에서 math.round를 사용했다 ... 그 부분 만은 아니지만. 위의 사람은 .toFixed (2)를 총 옆에 넣었다. 똑같은 것인가? – user1556319

+0

ohh 만약 당신이 다시 볼 수있는 확인란을 다른 질문이 ... 그래서 기본적으로 상자를 선택하지 않으면 (확인란을 눌러 확인란의 기능을 활성화하지 않습니다 지우기 단추를 누르십시오). ..click 버튼에 넣을 수있는 특정 변수를 지우는 함수가 있나요? – user1556319

0

수행하여 결과 var에 결과라고 가정, 최대 2 진수 포인트에 고정합니다 :

n.toFixed(2)