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动态修改超链接地址的方法
Feb 13 Javascript
JS判断字符串包含的方法
May 05 Javascript
js实现精确到秒的日期选择器完整实例
Apr 30 Javascript
基于jQuery的Web上传插件Uploadify使用示例
May 19 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
Jul 27 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
js实现模糊匹配功能
Feb 15 Javascript
在vue项目中引用Iview的方法
Sep 14 Javascript
JavaScript oncopy事件用法实例解析
May 13 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
vuex的数据渲染与修改浅析
Nov 26 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实现长连接的方法与注意事项的问题
2013/05/10 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
python多进程间通信代码实例
2019/09/30 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
商务英语专业自荐信
2013/10/14 职场文书
物流专业大学的自我评价
2014/01/11 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
党员一句话承诺大全
2014/03/28 职场文书
结婚典礼致辞
2015/07/28 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js