js中计算21.97+2.9,为什么等于24.869999999999997

 我来答
好代码分享
2014-03-26 · 专注互联网好代码分享
好代码分享
采纳数:121 获赞数:1337

向TA提问 私信TA
展开全部

这个是脚本精度问题,比如你作 .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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
初学C
2014-03-26 · TA获得超过320个赞
知道小有建树答主
回答量:199
采纳率:51%
帮助的人:74.9万
展开全部
小数点的运算 其实会有误差的 会无线接近于这个数 所以一般在做乘除的时候都是取整 你可以 把这两个数 同时乘以100 然后 存在int里 然后 相加 再同时除以100 就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqzhangkang
2014-03-26 · TA获得超过528个赞
知道小有建树答主
回答量:151
采纳率:57%
帮助的人:67.1万
展开全部
参考 chamcon.iteye.com/blog/2028582
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式