2017-10-27 13 views
1

십진수를 18 자리까지 제어 할 수 있도록 금액을 계산하는이 코드에 toFixed 메서드를 추가하면 잘못된 계산이 수행되지 않습니다.JavaScript에서 십진수 출력 제어

현재 10 만 51를 반환해야하지만,이 값을 설정하기 전에이 51.00000000000004

< script type = "text/javascript" > 
 
    $(document).ready(function() { 
 
    var qty = $("#qty"); 
 
    qty.keyup(function() { 
 
     var total = isNaN(parseInt(qty.val() * $("#price").val())) ? 0 : (qty.val() * $("#price").val()) 
 
     $("#total").val(total); 
 
    }); 
 
    }); 
 
</script>

답변

1

하나의 옵션이 바로 여기 반환 :

$("#total").val(total.toFixed(2)); 

또 다른 옵션입니다 수학 후 바로 여기 :

(qty.val() * $("#price").val()).toFixed(2) 
+0

고마워, 18 개가 필요해 18 개로 바꿨지 만 정확한 값은 여전히 ​​다르고 나온다. 지금 100,000이 51.000000000000007105를 반환하고 있습니다. 18 개 장소를 유지하는 방법이 있습니까? 정확한 숫자가 반환되는지 확인하십시오. –

+0

@DavidClabaugh 당신은 부동 소수점이 근사치이며 JavaScript 숫자가 소수 자릿수만큼 정확하지 않다는 사실에 착수하고 있습니다. 참조 : [부동 소수점 연산이 깨졌습니까?] (https://stackoverflow.com/questions/588004/is-floating-point-math-broken) –