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 相关文章推荐
JavaScript 调试器简介
Feb 21 Javascript
JQuery 图片的展开和伸缩实例讲解
Apr 18 Javascript
利用Angular.js限制textarea输入的字数
Oct 20 Javascript
浅谈React 属性和状态的一些总结
Nov 21 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
在vue-cli中组件通信的方法
Dec 16 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
vue 设置路由的登录权限的方法
Jul 03 Javascript
JavaScript中callee和caller的区别与用法实例分析
Jun 28 Javascript
bootstrap table实现横向合并与纵向合并
Jul 18 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实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php之readdir函数用法实例
2014/11/13 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
python安装与使用redis的方法
2016/04/19 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python set常用操作函数集锦
2017/11/15 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python内置加密模块用法解析
2019/11/25 Python
python3中sys.argv的实例用法
2020/04/24 Python
python2和python3哪个使用率高
2020/06/23 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
财务部会计岗位职责
2015/02/03 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
小学校长开学致辞
2015/07/29 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python