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 DOM操作 基于命令改变页面
May 06 Javascript
jQuery 表单验证扩展代码(一)
Oct 11 Javascript
23个超流行的jQuery相册插件整理分享
Apr 25 Javascript
JavaScript通过事件代理高亮显示表格行的方法
May 27 Javascript
Jquery为DIV添加click事件的简单实例
Jun 02 Javascript
基于jQuery的ajax方法封装
Jul 14 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 Javascript
Laravel admin实现消息提醒、播放音频功能
Jul 10 Javascript
express异步函数异常捕获示例详解
Nov 30 Javascript
React Fragment介绍与使用详解
Nov 11 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中GET变量的使用
2006/10/09 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
php实现读取内存顺序号
2015/03/29 PHP
开启PHP的伪静态模式
2015/12/31 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
理解Python中函数的参数
2015/04/27 Python
python打包成so文件过程解析
2019/09/28 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
如何用python批量调整视频声音
2020/12/22 Python
自荐信结尾
2013/10/27 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
领导离职感言
2015/08/03 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL