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.showModalDialog使用手册
Jan 11 Javascript
jQuery实现防止提交按钮被双击的方法
Mar 24 Javascript
Angular的$http与$location
Dec 26 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
Jul 10 Javascript
angular4 JavaScript内存溢出问题
Mar 06 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
Vue Router的手写实现方法实现
Mar 02 Javascript
JS自定义右键菜单实现代码解析
Jul 16 Javascript
微信小程序实现聊天室功能
Jun 14 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 var_export与var_dump 输出的不同
2013/08/09 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
python判断设备是否联网的方法
2018/06/29 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python同步windows和linux文件
2019/08/29 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
python 实现性别识别
2020/11/21 Python
python 6种方法实现单例模式
2020/12/15 Python
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
婚纱店策划方案
2014/05/22 职场文书
社区活动策划方案
2014/08/21 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
计划生育汇报材料
2014/12/26 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
Redis Cluster集群动态扩容的实现
2021/07/15 Redis