• 技术文章 >web前端 >js教程

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

    2016-05-16 18:20:49原创781
    有人问到一个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
    附全部测试代码:
    复制代码 代码如下:



    测试脚本





    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:float 运算精度
    上一篇:jquery下组织javascript代码(js函数化)_基础知识 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文详解Node中的模块化、文件系统与环境变量• 为什么要用debugger来调试代码?这样你能读懂各种源码!• 一文聊聊Node包管理发展的五个阶段• 一文探究Angular中的服务端渲染(SSR)• 带你了解Angular组件间进行通信的几种方法
    1/1

    PHP中文网