javascript中的float运算精度实例分析
JavaScript实例 分析 运算 精度 float
2023-06-13 09:14:24 时间
有人问到一个js问题:
复制代码代码如下:
vari=0.07;
varr=i*100;
alert(r);
结果为什么是7.0000000000000001?
查了下资料,其实我们知道JavsScript中,变量在存储时并不区分number和float类型,而是统一按float存储。而javascript使用IEEE754-2008标准定义的64bit浮点格式存储number,按照IEEE754的定义:http://en.wikipedia.org/wiki/IEEE_754-2008
decimal64对应的整形部分长度为10,小数部分长度为16,所以默认的计算结果为“7.0000000000000001”,如最后一个小数为0,则取1作为有效数字标志。
类似地,我们可以想像,1/3的结果应该是0.3333333333333333。
那么如何校正这个值呢?
可以用以下方法:
一、parseInt
varr4=parseInt(i*100);
二、Math.round
varr2=Math.round((i*100)*1000)/1000;
以上两种方法都可以得到7
附全部测试代码:
<html>
<head>
<title>测试脚本</title>
<scriptlanguage="JAVASCRIPT">
functioninit()
{
vari=0.07;
varr=i*100;
varr2=Math.round((i*100)*1000)/1000;
varr3=eval(i*100);
varr4=parseInt(i*100);
varr5=parseFloat(i*100*1.0000);
varr6=(1/3);
alert(r);
alert("Math.round="+r2);
alert("eval="+r3);
alert("parseInt="+r4);
alert("parseFloat="+r5);
alert(""+r6);
}
</script>
</head>
<bodyonload="init();">
</body>
</html>
相关文章
- 【说站】javascript new的实例化操作
- 【说站】javascript:void怎么解决
- JavaScript学习总结(十六)——Javascript闭包(Closure)详解编程语言
- 数据排序谁最快(javascript中的Array.prototype.sortPK快速排序)
- Javascript构造函数实例分析
- 你必须知道的Javascript知识点之"单线程事件驱动"的使用
- javascript树形导航菜单实例代码
- javascript去掉前后空格的实例
- javascript禁制后退键(Backspace)实例代码
- JavaScript实现维吉尼亚(Vigenere)密码算法实例
- 用javascript添加控件自定义属性解析
- javascript通用loading动画效果实例代码
- javascript实现数字+字母验证码的简单实例
- 原生javascript模仿win8等待提示圆圈进度条
- JavaScript中读取和保存文件实例
- JavaScript使用循环和分割来替换和删除元素实例
- JavaScript中使用document.write向页面输出内容实例
- javascript继承机制实例详解
- JavaScript中Cookie操作实例
- javascript面向对象之定义成员方法实例分析
- javascript中sort()的用法实例分析
- javascript事件模型实例分析