<!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>

js浮点数类型的更多相关文章

  1. JS浮点数运算Bug

    JS浮点数运算Bug的解决办法(转) 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.0849999 ...

  2. 关于js浮点数计算精度不准确问题的解决办法

    今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一直碰到这个问题,都是简单的使用tofixed方法进行处理一下,这对于一个程序员来说是及其不严谨的.因此在网上收集了一些处理浮点数精 ...

  3. js浮点数相加、减、乘、除精确计算

    js 浮点数计算时 ,无缘无辜 后边冒出一堆 小数点………… 貌似js本身的问题,类型不定?????? 只能自己写函数处理..  http://blog.csdn.net/w4bobo/article ...

  4. js浮点数计算问题 + 金额大写转换

    一 js浮点数计算问题解决方案: 1.使用 NumberObject.toFixed(num) 方法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 2.较精度计算浮点数 ...

  5. 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)

    第一节:整数类型.浮点数类型和定点数类型 1,整数类型 2,浮点数类型和定点数类型 M 表示:数据的总长度(不包括小数点):D 表示:小数位:例如 decimal(5,2) 123.45存入数据的时候 ...

  6. JS浮点数运算BUG破法

    JS里,0.3*3 = 0.8999999999999999 破法1:((0.3*10)*3)/10 破法2:(0.3*3).toFixed(2)//保留两位小数 原因:js浮点数用的是IEEE754 ...

  7. js浮点数的计算

        js在计算浮点数时可能不够准确,会产生舍入误差的问题,这是使用基于IEEE745数值的浮点计算的通病,并非ECMAScript一家,其他使用相同数值格式的语言也存在这个问题.     这里讲一 ...

  8. JS浮点类型计算

    /* ---------------- JS浮点数运算重置 ---------------- */ //加法函数 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结 ...

  9. 实现js浮点数加、减、乘、除的精确计算(网上很多文章里的方法是不能解决所有js浮点数计算误差的)

    最近做项目,要用到js的加.减.乘.除的计算,发现js浮点数计算会有一些误差. 网上有很多文章都有js浮点数计算误差的解决方法,说能解决这个问题,But…….比如一个加法函数,如下: function ...

  10. JS 强制类型转化

    在Js中, 强制类型转化分为两种情况: 一种是引用类型转化基本类型, 如数组转化成数字:一种是两种不同基本类型之间的转化,如字符串转化为数字.你不能将基本类型转化成引用类型,比如,不可能把数字转化为数 ...

随机推荐

  1. 如何在ubuntu上安装QQ音乐

    最简单易懂的安装QQ音乐教程,亲测可用!教程如下: 点击下方网址,进入QQ音乐下载页网址: https://y.qq.com/download/download.html 页面 点击Linux下方的下 ...

  2. 力扣784(java)-字母大小写全排列(中等)

    题目: 给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串. 返回 所有可能得到的字符串集合 .以 任意顺序 返回输出. 示例 1: 输入:s = " ...

  3. 数据库PolarDB开源之路该如何走?听听他们怎么说

    简介: 10月25日,由阿里云开发者社区.阿里云PolarDB开源社区.InfoQ联合举办的「开源人说」数据库PolarDB专场线下沙龙在杭州召开,5位阿里云数据库超级大咖.10位阿里云数据库开源生态 ...

  4. 阿里的 RocketMQ 如何让双十一峰值之下 0 故障?

    简介: 2020 年双十一交易峰值达到 58.3 W 笔/秒,消息中间件 RocketMQ 继续数年 0 故障丝般顺滑地完美支持了整个集团大促的各类业务平稳. 作者 | 愈安来源 | 阿里巴巴云原生公 ...

  5. 混合云K8s容器化应用弹性伸缩实战

    简介: 混合云K8s容器化应用弹性伸缩实战 1. 前提条件 本最佳实践的软件环境要求如下:应用环境:①容器服务ACK基于专有云V3.10.0版本.②公共云云企业网服务CEN.③公共云弹性伸缩组服务ES ...

  6. 案例|自建or现成工具?小型创业团队敏捷研发探索

    简介: 实践和踩坑建议. 我是刘永良,是一名全栈开发者也是一名创业者,来自济南--一个目前被称为互联网洼地的地方.2020年4月和三位志同道合的朋友,在济南共同创建了山东旷野网络科技有限公司,主要从事 ...

  7. 【产品动态】解读Dataphin流批一体的实时研发

    ​简介: Dataphin作为一款企业级智能数据构建与管理产品,具备全链路实时研发能力,从2019年开始就支撑可集团天猫双11的实时计算需求,文章将详细介绍Dataphin实时计算的能力. 背景 每当 ...

  8. 开源自建/托管与商业化自研 Trace,如何选择?

    ​简介: 随着微服务架构的兴起,服务端的调用依赖愈加复杂,为了快速定位异常组件与性能瓶颈,接入分布式链路追踪 Trace 已经成为 IT 运维领域的共识.但是,开源自建.开源托管或商业化自研 Trac ...

  9. 【CDS技术揭秘系列 总篇】阿里云的云定义存储来了

    ​简介: 全新发布的云定义存储 CDS 和传统的存储阵列.分布式存储.软件定义存储的区别在哪里?阿里云存储团队如何看待将来存储的发展趋势?本文邀请了 CDS 研发团队的核心技术负责人为大家揭开围绕着阿 ...

  10. [Gse] 高效的Golang中文分析库推荐

    优点:用法简单,支持各种语言,基本满足需求. 缺点:默认分词字典文件有 8M 需测试使用速度. 我们可以直接封装一个简单的辅助方法来实现分词功能: // @author cnblogs.com/far ...