2012-06-20 6 views
5

자바 스크립트에서 계산을하고 있지만 십진수로 정밀도 문제가 있습니다. 나는 정확한 계산을 게시 할 수 없습니다 그러나 이것은 내가 쓰기 예상치 못한 결과자바 스크립트 예기치 않은 결과

에 이르게하는 일을하고 무엇을 : alert(100.01-36.01); // 결과는 64

이다하지만 내가 쓸 때 : alert(100.01-37.01); // 결과 63.00000000000001

이고 38.01 ....과 같이 계속됩니다. 이 예기치 않은 동작이 나타나는 이유를 알려주세요. 계산이 잘못되었습니다. 사전에

감사합니다.

+2

기계에는 무한 정밀도가 없으므로 부동 소수점 값을 비교할 때 항상주의해야합니다. 64는 기계의 특수한 숫자이며 2의 거듭 제곱이므로 매우 잘 나타낼 수 있습니다. –

+1

이렇게하면 도움이 될 것입니다. http://stackoverflow.com/questions/588004/is-javascripts-math-broken –

+2

적어도 100 만 번 이상 묻기 때문에 질문을 게시하기 전에 검색을 사용하십시오. – Niko

답변

1

이 시도 :

 
<script type="text/javascript"> 
var n1 = parseFloat(100.01); 
var n2 = parseFloat(37.01); 
var res = (n1-n2) 
alert(res.toFixed(2)); 
</script> 
0

당신이 숫자로 숫자를 선언하지 않는 경우, 문자열로 JS 것 자동 사용을, 문자열이 숫자 만이 사용되지 않은 경우.

parseFloat (123.45)는 10 진수로 설정합니다.

관련 문제