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学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
jQuery中even选择器的定义和用法
Dec 23 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
前端设计师们最常用的JS代码汇总
Sep 25 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
Node.js数据库操作之查询MySQL数据库(二)
Mar 04 Javascript
JavaScript中双符号的运算详解
Mar 12 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
vue+element UI实现树形表格带复选框的示例代码
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 函数学习简单小结
2010/07/08 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
Angular2.js实现表单验证详解
2017/06/23 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python读取各种文件数据方法解析
2018/12/29 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Python flask框架端口失效解决方案
2020/06/04 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
金融事务专业求职信
2014/04/25 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技