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 相关文章推荐
DOM精简教程
Oct 03 Javascript
sina的lightbox效果。
Jan 09 Javascript
JavaScript基础知识之数据类型
Aug 06 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
Jul 18 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
jQuery树形控件zTree使用小结
Aug 02 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
Nov 07 Javascript
鼠标经过出现气泡框的简单实例
Mar 17 Javascript
利用Javascript实现一套自定义事件机制
Dec 14 Javascript
vue 过滤器filter实例详解
Mar 14 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
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中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
回顾Javascript React基础
2019/06/15 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python实现控制台进度条功能
2016/01/04 Python
python如何实现反向迭代
2018/03/20 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python输入多行字符串的方法总结
2019/07/02 Python
python使用minimax算法实现五子棋
2019/07/29 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
生物技术专业毕业生求职信范文
2013/12/14 职场文书
小组口号大全
2014/06/09 职场文书
爱护公共设施的标语
2014/06/24 职场文书