• 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>
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    Codechef EDGEST 树套树 树状数组 线段树 LCA 卡常
    BZOJ4319 cerc2008 Suffix reconstruction 字符串 SA
    Codechef STMINCUT S-T Mincut (CodeChef May Challenge 2018) kruskal
    Codeforces 316G3 Good Substrings 字符串 SAM
    Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划
    BZOJ1396 识别子串 字符串 SAM 线段树
    CodeForces 516C Drazil and Park 线段树
    CodeForces 516B Drazil and Tiles 其他
    CodeForces 516A Drazil and Factorial 动态规划
    SPOJ LCS2
  • 原文地址:https://www.cnblogs.com/ht955/p/13975402.html
Copyright © 2020-2023  润新知