var money = 0.00542;//0.006; alert(number(money).tofixed(2)); 0.00 function round2(number, fractiondigits) { with (Math) { return round(number * pow(10, fractiondigits)) / pow(10, fractiondigits); } } alert(round2(money, 2));//0.01 //toFixed函数 toFixed(number, decimal) { // decimal保留几位小数 decimal = decimal || 0; var s = String(number); // 如果number是科学计数法会出现bug 此时 s = number.toLocaleString() var decimalIndex = s.indexOf('.'); if (decimalIndex < 0) { var fraction = ''; for (var i = 0; i < decimal; i++) { fraction += '0'; } return s + '.' + fraction; } var numDigits = s.length - 1 - decimalIndex; if (numDigits <= decimal) { var fraction = ''; for (var i = 0; i < decimal - numDigits; i++) { fraction += '0'; } return s + fraction; } var digits = s.split(''); var pos = decimalIndex + decimal; var roundDigit = digits[pos + 1]; if (roundDigit > 4) { //跳过小数点 if (pos == decimalIndex) { --pos; } digits[pos] = Number(digits[pos] || 0) + 1; //循环进位 while (digits[pos] == 10) { digits[pos] = 0; --pos; if (pos == decimalIndex) { --pos; } digits[pos] = Number(digits[pos] || 0) + 1; } } //避免包含末尾的.符号 if (decimal == 0) { decimal--; } return digits.slice(0, decimalIndex + decimal + 1).join(''); } //重写toFixed()方法 Number.prototype.toFixed = function (d) { var s = this + ""; if (!d) d = 0; if (s.indexOf(".") == -1) s += "."; s += new Array(d + 1).join("0"); if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) { var s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true; if (a == d + 2) { a = s.match(/\d/g); if (parseInt(a[a.length - 1]) > 4) { for (var i = a.length - 2; i >= 0; i--) { a[i] = parseInt(a[i]) + 1; if (a[i] == 10) { a[i] = 0; b = i != 1; } else break; } } s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2"); } if (b) s = s.substr(1); return (pm + s).replace(/\.$/, ""); } return this + ""; };
js四舍五入四种 tofixed bug
最新推荐文章于 2024-05-16 17:17:33 发布