首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript parsefloat差减

Javascript parsefloat差减
EN

Stack Overflow用户
提问于 2016-09-05 20:47:06
回答 3查看 2.5K关注 0票数 1

我要减去两个浮动,但我得到999998.7799999999,为什么?实际结果是999998.78

代码语言:javascript
复制
Money1="2,000,001.44 $";
Money2="1,000,002.66 $"
Money1= Number(Money1.replace(/[^0-9\.]+/g,""));
Money2= Number(Money2.replace(/[^0-9\.]+/g,""));
console.log(parseFloat(Money1)-parseFloat(Money2));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-05 21:07:12

您可以使用toFixed(2),因为您只使用两位数字:

toFixed()返回numObj的字符串表示形式,它不使用指数表示法,并且在小数位之后有确切的数字。如果有必要,数字会四舍五入,如果有必要,小数部分会用零填充,以使其具有指定的长度。如果numObj大于1e+21,则此方法只需调用Number.prototype.toString()并以指数表示法返回字符串。

片段:

代码语言:javascript
复制
Money1="2,000,001.44 $";
Money2="1,000,002.66 $"
Money1= Number(Money1.replace(/[^0-9\.]+/g,""));
Money2= Number(Money2.replace(/[^0-9\.]+/g,""));
result = (Money1 - Money2).toFixed(2);
console.log(result);

票数 2
EN

Stack Overflow用户

发布于 2016-09-05 21:00:59

您想要的结果只是Javascript正在生成的内容(阅读有关Javascript中浮点操作的更多信息)的一个圆形版本。您可以自己对结果进行舍入,以获得所需的格式:

代码语言:javascript
复制
Money1="2,000,001.44 $";
Money2="1,000,002.66 $"
Money1= Number(Money1.replace(/[^0-9\.]+/g,""));
Money2= Number(Money2.replace(/[^0-9\.]+/g,""));
Rounded = Math.round((parseFloat(Money1)-parseFloat(Money2)) * 100) / 100;
console.log(Rounded);

票数 1
EN

Stack Overflow用户

发布于 2016-09-05 21:02:16

由于浮点精度的影响,Python文档有了很好的解释。https://docs.python.org/2/tutorial/floatingpoint.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39337526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档