今天在页面上用到了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
先放个前辈的文章:JavaScript数字精度丢失问题总结 今天遇到了19.99*100的问题,答案不等于1999,因为在javascript中浮点数的计算是以2进制计算的.自己写了一波解决方法(不能单纯的乘Math.pow(10,N)变成整数运算完再除掉,因为乘也会有精度问题,就像题面19.99*100不等于1999.): function formatFloat(num1,num2){ var str1 = num1.toString(); var str2 = num2.toString(