javascript中float怎么控制精度?

javascript中float怎么控制精度?,第1张

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如何保证时间精准不跳秒

1. 使用`window.performance.now()`方法来获取高精度的时间戳,它会返回当前时间和距离页面加载的时间的差值,可以保证精准到微妙级别。

2. 使用`setTimeout()`和`setInterval()`函数来定时调用,这样可以保证时间的精准性。

3. 使用`Date.now()`方法来获取当前时间戳,它可以保证精准到毫秒级别。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12070821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存