JS中toFixed()方法引起的问题如何解决


Posted in Javascript onNovember 20, 2012

最近发现JS当中toFixed()方法存在一些问题,采用原生的Number对象的原型对象上的toFixed()方法时,规则并不是所谓的“四舍五入”或者是“四舍六入五成双”,所谓“四舍六入五成双”,在百度百科上给的解释是:也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是最小的偶数) 。百度百科上涉及的几个例子在实际情况下确实成立,但不科学,并不能覆盖所有的情况。

测试浏览器:?潘夸?榔?E6以及高级?潘夸?榔?E78和所有现代主流浏览器包括IE9、IE10、FF、chrome、opera、safari。(注:在使用IE10的类似firebug的开发工具时,采用兼容IE低版本浏览器模式时的测试结果跟使用原生低版本IE浏览器的测试结果不一致)

在浮点数末尾≤4或者≥6的情况下的舍入没有争议,但当末尾正好等于5的情况下可谓混乱之极。
总结:众所周知,遵循IEEE754数值格式的语言的浮点计算会出现精度损耗的通病,ES也并非独此一家,因此尽量不要进行某个特定浮点数值的测试,如:0.1+0.2;
解决方案:重写Number.prototype.toFixed()方法:

Javascript 相关文章推荐
使用js实现雪花飘落效果
Aug 26 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
electron制作仿制qq聊天界面的示例代码
Nov 26 Javascript
Vue 封装防刷新考试倒计时组件的实现
Jun 05 Javascript
JS监听Esc 键触发事键
Apr 14 Javascript
小程序wx.getUserProfile接口的具体使用
Jun 02 Javascript
JavaScript实现拼音排序的方法
Nov 20 #Javascript
Js+Flash实现访问剪切板操作
Nov 20 #Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
Nov 19 #Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 #Javascript
基于jquery库的tab新形式使用
Nov 16 #Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 #Javascript
javascript 图片裁剪技巧解读
Nov 15 #Javascript
You might like
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
JS验证不重复验证码
2017/02/10 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python学习笔记之常用函数及说明
2014/05/23 Python
Python 的描述符 descriptor详解
2016/02/27 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
Python笔记之facade模式
2019/11/20 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
中专生学习生活的自我评价分享
2013/10/27 职场文书
企业诚信承诺书
2014/05/23 职场文书
自主招生学校推荐信
2014/09/26 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
走进毛泽东观后感
2015/06/04 职场文书
中学教师读书笔记
2015/07/01 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书