function accMul(arg1,arg2) { var m=0,s1=arg1.toString(),s2=arg2.toString(); try{m+=s1.split(".")[1].length}catch(e){} try{m+=s2.split(".")[1].length}catch(e){} return Number(s1.replace(".",""))*Number(s2.replace(&qu
今天在页面上用到了js进行小数相加119.01+0.01,结果大家都知道应该是:119.02的,然而结果是119..0200000…. ,莫名其妙的,还以为是我写的程序有问题,后来查了下才知道这是javascript浮点运算的一个bug. 解决方案 1.这是因为Javascript的数字类型是以64位的IEEE 754格式存储的. 2.解决方法把相加的结果做下处理 function toDecimal(x) { var val = Number(x) if(!isNaN(parseFloat(v
在小数相加时,可能会产生多个小数位.如下所示: var x=1+1; //2 var x=1.20+1.11; //2.31 var x=1.56+1.76; //3.3200000000000003 导致上述原因是因为Javascript的数字类型是以64位的IEEE 754格式存储的.在用的时候一定要小心,测试要到位. 解决方法: 加上toFixed()函数就可以把函数控制在想要的小数位以内,具体语法如下: var x=1+1; //2 var x=1.20+1.11;