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高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
Apr 29 Javascript
纯jquery实现模仿淘宝购物车结算
Aug 20 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
jQuery常用的一些技巧汇总
Mar 26 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
JavaScript中子对象访问父对象的方式详解
Sep 01 Javascript
vuejs如何配置less
Apr 25 Javascript
详解webpack编译多页面vue项目的配置问题
Dec 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新手上路(十一)
2006/10/09 PHP
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
js 火狐下取本地路径实现思路
2013/04/02 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python解析xml模块封装代码
2014/02/07 Python
Python入门篇之字符串
2014/10/17 Python
Python计算回文数的方法
2015/03/11 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
英语专业学生个人求职信范文
2014/01/06 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
活动总结报告格式
2014/05/09 职场文书
五水共治一句话承诺
2014/05/30 职场文书
国庆阅兵观后感
2015/06/15 职场文书