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的$.ajax async使用
Oct 19 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
May 14 Javascript
jquery 实现窗口的最大化不论什么情况
Sep 03 Javascript
JS获取各种宽度、高度的简单介绍
Dec 19 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
Nov 25 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 Javascript
vue 之 css module的使用方法
Dec 04 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
Apr 12 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 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 $_ENV为空的原因分析
2009/06/01 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
js随机生成一个验证码
2017/06/01 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
python数据分析:关键字提取方式
2020/02/24 Python
Opencv求取连通区域重心实例
2020/06/04 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
生产部管理制度
2014/01/31 职场文书
大学生个人求职信
2014/06/02 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
Redis集群的关闭与重启操作
2021/07/07 Redis