JS中解决数值很小时四舍五入的精度问题
2009-01-05 17:26
267 查看
转自:http://www.javaeye.com/topic/308966
一般我们都使用js自带的toFixed函数来进行四舍五入的操作,但是当数值很小时却发现问题了。
例如:
<script language="javascript">
var money=0.00542;
alert(Number(money).toFixed(2));
</script>
输出的结果是0.00,这个结果显然是错误的。
下面的方法通过使用Math.round函数,解决数值很小时的精度问题。
例如:
<script language="javascript">
var money=0.00542;
//alert(Number(money).toFixed(2));
function round2(number,fractionDigits){
with(Math){
return round(number*pow(10,fractionDigits))/pow(10,fractionDigits);
}
}
alert(round2(money,2));
</script>
输出结果:0.01。
说明:
round 方法:返回与给出的数值表达式最接近的整数。
Math.round(number) :必选项 number 参数是要舍入到最接近整数的值。
如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。
一般我们都使用js自带的toFixed函数来进行四舍五入的操作,但是当数值很小时却发现问题了。
例如:
<script language="javascript">
var money=0.00542;
alert(Number(money).toFixed(2));
</script>
输出的结果是0.00,这个结果显然是错误的。
下面的方法通过使用Math.round函数,解决数值很小时的精度问题。
例如:
<script language="javascript">
var money=0.00542;
//alert(Number(money).toFixed(2));
function round2(number,fractionDigits){
with(Math){
return round(number*pow(10,fractionDigits))/pow(10,fractionDigits);
}
}
alert(round2(money,2));
</script>
输出结果:0.01。
说明:
round 方法:返回与给出的数值表达式最接近的整数。
Math.round(number) :必选项 number 参数是要舍入到最接近整数的值。
如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。
相关文章推荐
- JS中解决数值很小时四舍五入的精度问题
- js金额计算解决精度问题
- JS浮点计算精度问题分析与解决
- double、float数值运算出现精度问题的解决方式
- js加减乘除丢失精度问题解决方法
- javascript(js)浮点数字精度问题的一个解决办法。
- js精确小数乘法(解决精度问题)
- JS浮点类型运算精度丢失问题解决办法
- SpringMVC使用FastJson并解决长数值精度丢失问题
- 解决js中小数相加损失精度的问题
- JS浮点类型运算精度丢失问题解决办法
- js加减乘除丢失精度问题解决方法 你试一下12*1.3就知道了
- JS的浮点数计算精度丢失问题解决方案
- js加减乘除丢失精度问题解决方法
- JS中toFixed()方法引起的精度丢失的问题解决
- 关于js中计算精度的问题解决办法
- js加减乘除丢失精度问题解决方法
- js中的数值精度问题
- 解决java数值范围以及float与double精度丢失的问题
- toFixed方法重写,toFixed四舍五入在数值很小时的精度问题