由于公司业务,我要使用js给客户开发一个基于网页的数学运算器,所以js的数学运算这坑必须趟
那么JS下0.1+0.2会等于0.30000000004这个问题,请问大家都是如何巧妙解决的呢
Math.round( (.1+.2)*100)/100;//0.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))