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 01 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
详谈javascript中的cookie
Jun 03 Javascript
判断JS对象是否拥有某属性的方法推荐
May 12 Javascript
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
js转html实体的方法
Sep 27 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
Feb 27 Javascript
node.js实现登录注册页面
Apr 08 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
JavaScript刷新页面的几种方法总结
Mar 28 Javascript
类和原型的设计模式之复制与委托差异
Jul 07 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
神族 PROTOSS 概述
2020/03/14 星际争霸
我的论坛源代码(二)
2006/10/09 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
react中的ajax封装实例详解
2017/10/17 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
python常用排序算法的实现代码
2019/11/08 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
Linux机考试题
2015/10/16 面试题
利群广告词
2014/03/20 职场文书
工作证明英文模板
2014/10/21 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
质检员工作总结2015
2015/04/25 职场文书
信用卡催款律师函
2015/05/27 职场文书
文化大革命观后感
2015/06/17 职场文书
Android中View.post和Handler.post的关系
2022/06/05 Java/Android