>  기사  >  웹 프론트엔드  >  toFixed가 Javascript에서 값을 정확하게 반올림하지 않는 이유는 무엇입니까?

toFixed가 Javascript에서 값을 정확하게 반올림하지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-22 14:47:02400검색

Why is toFixed Not Rounding Values Accurately in Javascript?

Javascript에서 toFixed가 정확하게 반올림되지 않음

Javascript에서 체크박스 값을 관리하는 과정에서 사용자는 toFixed(2 ) 메서드는 값을 적절하게 반올림하지 않습니다. 예를 들어, 859.385 값은 예상되는 859.39 대신 859.38로 표시될 수 있습니다.

브라우저 불일치 및 정밀도

toFixed 메소드가 다르게 동작할 수 있다는 점에 유의하는 것이 중요합니다. 사용 중인 브라우저를 기반으로 합니다. 브라우저 불일치를 해결하고 브라우저 전체에서 일관된 반올림을 보장하기 위해 권장되는 솔루션은 toFixed10 메소드 또는 다음 사용자 정의 함수를 활용하는 것입니다:

<code class="javascript">function toFixed( num, precision ) {
    return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision);
}</code>

사용자 정의 함수 구현

제공된 코드에 사용자 정의 toFixed 함수를 통합하려면 다음 수정이 필요합니다.

<code class="javascript">var standardprice = parseFloat($('#hsprice_'+this.id.split('_')[1]).val());
var price =  parseFloat($('#hprice_'+this.id.split('_')[1]).val());
var discount =  parseFloat($('#hdiscount_'+this.id.split('_')[1]).val());
var deposit =  parseFloat($('#hdeposit_'+this.id.split('_')[1]).val());

var currSprice = parseFloat($('#hTotalSprice').val());
var currPrice = parseFloat($('#hTotalPrice').val());
var currDiscount = parseFloat($('#hTotalDiscount').val());
var currDeposit = parseFloat($('#hTotalDeposit').val());

currSprice += standardprice;
currPrice += price;
currDiscount += discount;
currDeposit += deposit;

$('#lblTotalSprice').text('$'+addCommas(toFixed(currSprice, 2)));
$('#lblTotalPrice').text('$'+addCommas(toFixed(currPrice, 2)));
$('#lblTotalDiscount').text('$'+addCommas(toFixed(currDiscount, 2)));
$('#lblTotalDeposit').text('$'+addCommas(toFixed(currDeposit, 2)));

$('#hTotalSprice').val(toFixed(currSprice, 2));
$('#hTotalPrice').val(toFixed(currPrice, 2));
$('#hTotalDiscount').val(toFixed(currDiscount, 2));
$('#hTotalDeposit').val(toFixed(currDeposit, 2));</code>

이 사용자 정의 함수를 구현하면 브라우저 변형에 관계없이 정확한 반올림을 보장할 수 있습니다.

위 내용은 toFixed가 Javascript에서 값을 정확하게 반올림하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.