博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript中toFixed方法的改进
阅读量:6119 次
发布时间:2019-06-21

本文共 1582 字,大约阅读时间需要 5 分钟。

hot3.png

先看一段代码

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;}

转载于:https://my.oschina.net/lovebing/blog/140689

你可能感兴趣的文章
2019年最新阿里面试真题:阿里最常用的Spring框架,这五大问题你又掌握了多少!...
查看>>
面试题:Nginx 是如何实现高并发?常见的优化手段有哪些?
查看>>
React如何绑定一个函数到一个组件实例?
查看>>
理理Vue细节
查看>>
B 数制转换
查看>>
2019年程序员跳槽找工作避坑指南
查看>>
产品的多终端形态——20171129
查看>>
作为一个使用Python的Web工程师,你必须从全局了解浏览器是如何与服务器互联的...
查看>>
QT学习(1):QT5 7+VS2013开发环境搭建
查看>>
设计模式(十三)享元模式
查看>>
Java线程池 你知它有多深
查看>>
Python系列之环境安装
查看>>
React使用create-react-app搭建项目工程
查看>>
python parameter参数
查看>>
NSString用copy还是strong修饰
查看>>
nodejs 30行代码 爬豆瓣电影数据
查看>>
新项目创建(MVP retrofit2.0+Rxjava+okhttp3+rxlifecycle)
查看>>
滚动事件 滚动条
查看>>
ReactNative开发 WebStorm下安装ESLint检测JS代码
查看>>

React 基础知识点总结
查看>>