javascript中的float运算精度实例分析


Posted in Javascript onAugust 21, 2010

有人问到一个js问题:

var i = 0.07; 
var r = i*100; 
alert(r);

结果为什么是7.0000000000000001?
查了下资料,其实我们知道JavsScript中,变量在存储时并不区分number和float类型,而是统一按float存储。而javascript使用IEEE 754-2008 标准定义的64bit浮点格式存储number,按照IEEE 754的定义: http://en.wikipedia.org/wiki/IEEE_754-2008
decimal64对应的整形部分长度为10,小数部分长度为16,所以默认的计算结果为“7.0000000000000001”,如最后一个小数为0,则取1作为有效数字标志。

类似地,我们可以想像,1/3的结果应该是0.3333333333333333。
那么如何校正这个值呢?
可以用以下方法:
一、parseInt

var r4=parseInt(i*100);

二、Math.round

var r2=Math.round((i*100)*1000)/1000;

以上两种方法都可以得到7
附全部测试代码:

<html> 
<head> 
<title>测试脚本</title> 
<script language="JAVASCRIPT"> 
function init() 
{ 
var i = 0.07; 
var r = i*100; 
var r2=Math.round((i*100)*1000)/1000; 
var r3 = eval(i*100); 
var r4=parseInt(i*100); 
var r5=parseFloat(i*100*1.0000); 
var r6=(1/3); 
alert(r); 
alert("Math.round="+r2); 
alert("eval="+r3); 
alert("parseInt="+r4); 
alert("parseFloat="+r5); 
alert(""+r6); 
} 
</script> 
</head> 
<body onload="init();"> 
</body> 
</html>
Javascript 相关文章推荐
让广告代码不再影响你的网页加载速度
Jul 07 Javascript
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
将json转换成struts参数的方法
Nov 08 Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
js实现简单抽奖功能
Nov 24 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 Javascript
vue穿梭框实现上下移动
Jan 29 Vue.js
Firebug入门指南(Firefox浏览器)
Aug 21 #Javascript
jquery插件之easing 动态菜单
Aug 21 #Javascript
url地址自动加#号问题说明
Aug 21 #Javascript
jquery中输入验证中一个不错的效果
Aug 21 #Javascript
单独使用CKFinder选择图片的方法
Aug 21 #Javascript
jQuery UI AutoComplete 自动完成使用小记
Aug 21 #Javascript
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 #Javascript
You might like
PHP strtotime函数详解
2009/12/18 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
php依赖注入知识点详解
2019/09/23 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
python的几种开发工具介绍
2007/03/07 Python
python 获取文件列表(或是目录例表)
2009/03/25 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
土木工程专业自荐信
2013/10/04 职场文书
黄河的主人教学反思
2014/02/07 职场文书
自荐书范文范例
2014/02/13 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
考核评语大全
2014/04/29 职场文书
交通安全责任书范本
2014/07/24 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2014年纪检工作总结
2014/11/12 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书