toFixed 在Javascript 中無法準確舍入
在Javascript 中管理複選框值時,使用者可能會遇到一個挑戰,其中toFixed(2 ) 方法未適當舍入值。例如,值 859.385 可能會顯示為 859.38,而不是預期的 859.39。
瀏覽器不一致和精確度
需要注意的是,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>
透過實作此自訂函數,無論瀏覽器如何變化,您都可以確保準確的捨入。
以上是為什麼 Javascript 中的 toFixed 不能準確地捨入值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!