js中Number.toFixed()方法的理解
2018-06-24 01:49:38来源:未知 阅读 ()
需求:对浮点数进行四舍五入精度获取。
问题:直接使用Number.toFixed()会出现异常的舍入情况。
原因:计算机浮点数存储是二进制,js的Number.toFixed()实际的精度确认规则是四舍六入五成双,逢四下舍,逢六入一,逢五时,根据浏览器内核计算结果也不尽相同。
具体原理这里不做详细描述,各位看官可自行查阅相关资料。
解决方法:重新Number.toFixed()方法。
实现原理:将浮点数转化为整数,保留所需位数,再转为浮点数。
实现代码:
1 Number.prototype.toFixed = function (length) { 2 var s = this + ''; 3 var len = length || 0; 4 var result = s; 5 var arr = s.split('.'); 6 7 //整数 8 if (arr.length < 2) { 9 if (len > 0) { 10 result += '.'; 11 for (var i = 1; i <= len; i++) { 12 result += '0'; 13 } 14 } 15 return result; 16 } 17 18 //小数 19 var first = arr[0]; 20 var second = arr[1]; 21 22 //小数点位数等于length 23 if (second.length == len) { 24 return result; 25 } 26 27 //小数点位数小于length 28 if (second.length < len) { 29 for (var k = 1; k <= len - second.length; k++) { 30 result += '0'; 31 } 32 return result; 33 } 34 35 //小数点位数大于length 36 result = first + second.substr(0, len + 1); 37 var last = Math.floor((result * 1 + 5) / 10); 38 result = (last / Math.pow(10, len)).toFixed(len); 39 return result; 40 };
备注:解决方案有很多种,这只是个人的理解,仅供参考。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- NiftyCube实现圆角边框的方法 2020-03-20
- 根据分辨率调用css文件的方法 2020-03-19
- JS简单去除数组中重复项的方法 2020-03-16
- javascript 中关于array的常用方法详解 2020-03-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash