• js浮点数类型


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script>
            // 浮点数类型  小数类型  float

            // 1,有效数值 
            // 小数的位数可以是无穷多位
            // 但是在计算机中,规定存储浮点数,是有限制的,不能无限存储小数位数
            // 在 JavaScript 语言中 浮点数 ,整数部分+小数部分,最多一共存储 17位
            // 计算 有效数值 计算是的 从左起的非0数值位数
            // 超过17位有效数值的内容,直接舍弃,不会进行四舍五入转化

            // 2,科学技术法
            // 是计算机语言中,通用的一种计算数值的语法
            // 语法形式  数值 e + 或者 - 数值
            // 一般如果是 + ,可以省略不写

            // 举例 :  2 e +3  2 乘以 10的3次方 --- 2000
            //         2 e -3  2 除以 10的3次方 --- 0.002

            // 比较大的数值,都会使用科学计数法存储
            // 数值1,可以是小数
            // 数值2,语法规定,不能是小数

            // JavaScript语法规定,即时是使用科学计数法,存储的整数,数据类型也是浮点数类型
            // 2e3 表示的 数值是 2000 看似是一个整数
            // 但是 在计算机语法中 这个数值的数据类型 仍然是 浮点数
            


            // 有效数值,从左起,第一个非0 数值开始计算
            // 超出17位部分,直接舍弃
            var float1 = 0.0012345678901234567890123456789;
            // console.log(float1);


            // 科学计数法
            var float2 = 2.123e3;
            // console.log(float2);

            var float3 = 2.123e-3;
            // console.log(float3);

            // 3,浮点数的误差 / 浮点数的的精度丢失

            // console.log( 0.1 * 0.1 );
            // console.log( 0.1 * 0.2 );
            // console.log( 0.1 * 0.3 );
            // console.log( 0.1 * 0.4 );
            // console.log( 0.1 * 0.5 );
            // console.log( 0.1 * 0.6 );
            // console.log( 0.1 * 0.7 );
            // console.log( 0.1 * 0.8 );
            // console.log( 0.1 * 0.9 );

            // 当 浮点数 直接参与运算或者比较时,计算结果或者比较结果,往往会出现误差
            // 这样的情况,我们称为 浮点数的误差 / 浮点数的精度丢失

            // 因为 计算机 的存储原理,造成计算机在存储浮点数时,存储的不是准确数值,存储的是一个近似数值,显示时,显示为一个浮点数值效果
            // 当浮点数直接参与计算或者参与比较时,实际参与预算或者比较的数值,也是近似值
            // 就造成了计算或者比较时,一定会存在误差,这个误差在特殊情况下会表现出误差的结果
            // 因此,实际项目中,我们一定要杜绝浮点数直接参与运算或者比较判断
            // 我们在之后的课程中,会告诉大家,如何处理浮点数

            // 总结:浮点数直接参与运算或者比较判断,误差/精度丢失,一定会存在,在特殊情况下,会体现效果

            // 判断两个数值是否相等   ==   等于判断,判断等号两侧的内容,数值是否相同

            console.log( 8 == 8);              // 判断 8 是否 等于 8  结果是 true
            console.log( 0.8*10 == 8);         // 判断 0.8*10 是否 等于 8  结果是 true
            console.log( (0.1+0.7)*10 == 8 );   // 判断 0.8*10 是否 等于 8  结果是 true

            // 面试时,经常会遇到 有浮点数参与的运算,判断比较的结果是 true 还是 false

            // 1,我不知道这个表达式的结果是true还是false
            // 2,因为浮点数直接参与运算或者比较,一定会造成误差/精度丢失,在特殊情况下会有所体现
            // 3,因此,我绝对不会使用这样的形式,直接运算或者比较浮点数
            // 4,这个表达式到底会不会因为误差/精度丢失,产生错误结果,我也不清楚,因为我从来没这么用过
            // 5,我会使用.....方法,来杜绝浮点数直接参与计算或者比较,造成的误差和精度丢失

            // 在JavaScript 中有专门的浮点数计算方法
            // double 高精度浮点数运算



        </script>
    </body>
    </html>
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    codefoeces problem 671D——贪心+启发式合并+平衡树
    bzoj 1598: [Usaco2008 Mar]牛跑步
    bzoj 1050: [HAOI2006]旅行comf&&【codevs1001】
    codefoeces 671 problem D
    利用FFMPEG以及EasyRTMP实现读取H.264文件推RTMP视频流的两种方式
    视频流拉转推工具对比:EasyRTSPLive和FFMPEG拉转推效果对比
    TSINGSEE青犀视频Webrtc实时通信的构建流程:PeerConnection对等通信的实现方式
    TSINGSEE青犀视频云边端架构产品编译Intel Media SDK 编译报错error"SSE4.1 instruction set not enabled"
    H.265编码视频在web网页实现无插件播放,应该通过软解码还是硬解码?
    【案例分析】EasyDSS+EasyCVR融合共享解决方案
  • 原文地址:https://www.cnblogs.com/ht955/p/13975402.html
Copyright © 2020-2023  润新知