Js经典的0.1+0.2问题

由于公司业务,我要使用js给客户开发一个基于网页的数学运算器,所以js的数学运算这坑必须趟
那么JS下0.1+0.2会等于0.30000000004这个问题,请问大家都是如何巧妙解决的呢

阅读 6.8k
3 个回答

function fixNumberDecimalDigits(number, digits) {

var formatNumber = parseFloat(number);
if (isNaN(formatNumber)) return false;

var digits = digits || 2;
formatNumber = formatNumber.toString();

var reg = new RegExp('([0-9]+.[0-9]{' + digits +'})[0-9]*');
var stringNumber = formatNumber.replace(reg, "$1");
var decimalPosition = stringNumber.indexOf('.');
if (decimalPosition < 0) {
    decimalPosition = stringNumber.length;
    stringNumber += '.';
}
while (stringNumber.length <= decimalPosition + digits) {
    stringNumber += '0';
}
return stringNumber;

}

var a = 0.1,

b = 0.2,
c = a + b ;

console.log(fixNumberDecimalDigits(c, 1))

Math.round( (.1+.2)*100)/100;//0.3

自己写一个方法就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题