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

 更新时间:2010年08月21日 15:17:41   作者:  
javascript中的float运算精度的一些问题,下面是具体的说明。
有人问到一个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>

相关文章

  • js实现滑动到页面底部自动加载更多功能

    js实现滑动到页面底部自动加载更多功能

    本文主要分享了js实现滑动到页面底部自动加载更多功能的代码。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • js+div实现文字滚动和图片切换效果代码

    js+div实现文字滚动和图片切换效果代码

    这篇文章主要介绍了js+div实现文字滚动和图片切换效果代码,涉及javascript鼠标事件及页面元素图片滚动效果实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JavaScript实现多个物体同时运动

    JavaScript实现多个物体同时运动

    这篇文章主要为大家详细介绍了JavaScript实现多个物体同时运动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 浅谈javascript中replace()方法

    浅谈javascript中replace()方法

    这篇文章主要介绍了浅谈javascript中replace()方法,replace函数方法是返回根据正则表达式进行文字替换后的字符串的复制,需要的朋友可以参考下
    2015-11-11
  • 如何让DIV可编辑、可拖动示例代码

    如何让DIV可编辑、可拖动示例代码

    DIV是一个盒子模型通俗说就是一个容器,在布局过程中经常会使用到这个标签,在本文大家将学会如何让DIV可编辑、可拖动,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-09-09
  • uniapp解决软键盘弹出问题方法详解

    uniapp解决软键盘弹出问题方法详解

    这篇文章主要为大家介绍了uniapp解决软键盘弹出问题方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • js父窗口关闭时子窗口随之关闭完美解决方案

    js父窗口关闭时子窗口随之关闭完美解决方案

    admin注销的时候,或者main.html关闭的时候,如何让打开的所有新窗口一起关闭,下面有个不错的解决方案,大家可以参考下
    2014-04-04
  • uniapp实现横向滚动选择日期

    uniapp实现横向滚动选择日期

    这篇文章主要为大家详细介绍了uniapp实现横向滚动选择日期,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • bootstrap multiselect下拉列表功能

    bootstrap multiselect下拉列表功能

    这篇文章主要为大家详细介绍了bootstrap multiselect下拉列表功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • javascript 利用Image对象实现的埋点(某处的点击数)统计

    javascript 利用Image对象实现的埋点(某处的点击数)统计

    统计用户页面某处的点击数或者执行到程序中某个点的次数;根据实际情况,创建多个Image对象,原则谁空闲谁做事,解下来详细介绍,需要了解的朋友可以参考下
    2012-12-12

最新评论