js中计算21.97+2.9,为什么等于24.869999999999997
3个回答
展开全部
这个是脚本精度问题,比如你作 .1+.2 它不会等于.3而是.299999999999999这就是脚本算的精度问题,很多人都遇到过。话不多说,给你一段解决代码吧
function XMZadd(arg1,arg2){arg1=arg1.toString(),arg2=arg2.toString();var arg1Arr=arg1.split("."),arg2Arr=arg2.split("."),d1=arg1Arr.length==2?arg1Arr[1]:"",d2=arg2Arr.length==2?arg2Arr[1]:"";var maxLen=Math.max(d1.length,d2.length);var m=Math.pow(10,maxLen);var result=Number(((arg1*m+arg2*m)/m).toFixed(maxLen));var d=arguments[2];return typeof d==="number"?Number((result).toFixed(d)):result}
调用 XMZadd(21.97,2.9);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
小数点的运算 其实会有误差的 会无线接近于这个数 所以一般在做乘除的时候都是取整 你可以 把这两个数 同时乘以100 然后 存在int里 然后 相加 再同时除以100 就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参考 chamcon.iteye.com/blog/2028582
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询