js里边取float数的精度的方法 toFixed()
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
toFixed() 里面的数为 0- 20 之间的整数。
var a = 1.23456
a.toFixed(2) = 1.23
toFixed 方法有bug,不同的浏览器对它的解析不一样。比如,0.009.toFixed(2)在firefox下 为0.01 而在IE7下为
0.00。
解决办法:
重写
Number.prototype.toFixed = function ( exponent)
{
return parseInt( this * Math.pow( 10 , exponent) + 0.5 )/Math.pow(10,exponent);
}
遇到要在页面上计算报销金额-借款金额=应付金额。这三个金额都是Float型。
但发现js计算float的加减会出现精度不准确问题。
解决方案:
第一种是按小数点分隔,分别计算小数点前面那部分的值和小数点后面那部分的值。
此方法有点繁琐。
第二种方法是该float乘以10的n次方(n为小数位数),即把该float放大为整型再进行加或减运算,然后再将得到结果除以10的n次方,toFied(n)取得需要的小数位数。