js中float类型加减乘除运算精度问题

    技术2022-05-19  30

    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)取得需要的小数位数。


    最新回复(0)