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 相关文章推荐
window.open()弹出居中的窗口
Feb 01 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
jQuery的$.proxy()应用示例介绍
Apr 03 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
Aug 08 Javascript
ES6中Array.find()和findIndex()函数的用法详解
Sep 16 Javascript
JavaScript嵌入百度地图API的最详细方法
Apr 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 getsiteurl()函数
2009/09/05 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
Python 中@property的用法详解
2020/01/15 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
python打开音乐文件的实例方法
2020/07/21 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
中海讯通笔试题
2015/09/15 面试题
程序员机试试题汇总
2012/03/07 面试题
韩国商务邀请函
2014/01/14 职场文书
酒店经理职责
2014/01/30 职场文书
给国外客户的邀请函
2014/01/30 职场文书
会计专业求职信范文
2014/03/16 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
springboot入门 之profile设置方式
2022/04/04 Java/Android