Javascript中toFixed方法的改进
2013-06-26 18:06
1596 查看
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
先看一段代码
var number = 75.05; alert(number.toFixed(1));结果是 75.0, 显然不是预期的 75.1
以下提供一种改进的方法
2013/07/17修正:
50行,(parseFloat(result) * x + 1) / x 改为 Math.round((parseFloat(result) * x + 1)) / x;
2013/07/01修正:
37行,decimal.length < n的情况,去掉 result += '.'
45行,decimal.substr(n, n + 1) 改为 decimal.substr(n, 1)
/** * toFixed 方法的改进 by lovebing at 2013/06/26 * @param {int} n * @returns {Number.prototype.toFixed} */ Number.prototype.toFixed = function(n) { if (n > 20 || n < 0) { throw new RangeError('toFixed() digits argument must be between 0 and 20'); } var number = this; if (isNaN(number) || number >= Math.pow(10, 21)) { return number.toString(); } if (typeof(n) == 'undefined' || n == 0) { return (Math.round(number)).toString(); } var result = number.toString(); var arr = result.split('.'); // 整数的情况 if (arr.length < 2) { result += '.'; for (var i = 0; i < n; i++) { result += '0'; } return result; } var integer = arr[0]; var decimal = arr[1]; if (decimal.length == n) { return result; } if (decimal.length < n) { for (var i = 0; i < n - decimal.length; i++) { result += '0'; } return result; } result = integer + '.' + decimal.substr(0, n); var last = decimal.substr(n, 1); // 四舍五入,转换为整数再处理,避免浮点数精度的损失 if (parseInt(last) >= 5) { var x = Math.pow(10, n); result = (parseFloat(result) * x + 1) / x; result = result.toFixed(n); } return result; }
相关文章推荐
- javascript之对系统的toFixed()方法的修正
- Javascript - Math 对象 - 某个数字区域之间的随机数(精确度:小数点后两位)toFixed方法原生JS实现
- JavaScript之toFixed方法详解
- Javascript中 toFixed四舍六入方法
- javascript中toFixed()方法详解
- JavaScript toFixed() 方法
- javascript之对系统的toFixed()方法的修正
- JavaScript toFixed() 方法
- JavaScript toFixed() 方法
- javascript中toFixed()四舍五入使用方法详解
- javascript 保留小数位 (toFixed方法)
- JavaScript 指定小数位数 toFixed() 方法
- javascript 保留小数位 (toFixed方法)
- JavaScript Number对象的toFixed() 方法
- JavaScript中指定小数位数的toFixed()方法
- JavaScript中toFixed()方法的用法
- JavaScript toFixed() 方法
- javascript中toFixed()方法详解
- 关于javascript里的toFixed()方法-格式化数字
- 常用的javascript方法之toFixed()(part1)