我要减去两个浮动,但我得到999998.7799999999,为什么?实际结果是999998.78
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));发布于 2016-09-05 21:07:12
您可以使用toFixed(2),因为您只使用两位数字:
toFixed()返回numObj的字符串表示形式,它不使用指数表示法,并且在小数位之后有确切的数字。如果有必要,数字会四舍五入,如果有必要,小数部分会用零填充,以使其具有指定的长度。如果numObj大于1e+21,则此方法只需调用Number.prototype.toString()并以指数表示法返回字符串。
片段:
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);
发布于 2016-09-05 21:00:59
您想要的结果只是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);
发布于 2016-09-05 21:02:16
由于浮点精度的影响,Python文档有了很好的解释。https://docs.python.org/2/tutorial/floatingpoint.html
https://stackoverflow.com/questions/39337526
复制相似问题