首页 > web前端 > js教程 > 正文

为什么 Javascript 中的 toFixed 不能准确舍入值?

Patricia Arquette
发布: 2024-10-22 14:47:02
原创
399 人浏览过

Why is toFixed Not Rounding Values Accurately in Javascript?

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中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!