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 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
JQuery动态添加和删除表格行的方法
Mar 09 Javascript
判断访客终端类型集锦
Jun 05 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
微信小程序 wx.uploadFile无法上传解决办法
Dec 14 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
Jun 20 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
基于vue.js实现分页查询功能
Dec 29 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
帮你提高开发效率的JavaScript20个技巧
Jun 18 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
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php学习之运算符相关概念
2011/06/09 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python中super()函数简介及用法分享
2016/07/11 Python
Python 含参构造函数实例详解
2017/05/25 Python
python删除不需要的python文件方法
2018/04/24 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
python如何实现单链表的反转
2020/02/10 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
Django在Model保存前记录日志实例
2020/05/14 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
会计出纳岗位职责
2013/12/25 职场文书
法律进机关实施方案
2014/03/12 职场文书
优秀班组长事迹
2014/05/31 职场文书
志愿者宣传口号
2014/06/17 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
领导干部作风建设总结
2014/10/23 职场文书
导游词之沈阳植物园
2019/11/30 职场文书