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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(1)
Dec 23 Javascript
jquery ajax提交表单数据的两种方式
Nov 24 Javascript
Jquery 最近浏览过的商品的功能实现代码
May 14 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
Feb 15 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
Dec 18 Javascript
ajax与jsonp的区别及用法
Oct 16 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操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
python字符串替换示例
2014/04/24 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
创先争优制度
2014/01/21 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
2014年信用社工作总结
2014/11/25 职场文书
欢迎词怎么写
2015/01/23 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
Python的property属性详细讲解
2022/04/11 Python