在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,这是为什么呢?这个问题也会偶尔被用来当做面试题来考查面试者对JavaScript的数值的理解程度。

0.1+0.2==0.3 // false
在JavaScript中的二进制的浮点数0.1和0.2并不是十分精确,在他们相加的结果并非正好等于0.3,而是一个比较接近的数字 0.30000000000000004 ,所以条件判断结果为false。

原因在于在JS中采用的IEEE 754的双精度标准,计算机内部存储数据的编码的时候,0.1在计算机内部根本就不是精确的0.1,而是一个有舍入误差的0.1。当代码被编译或解释后,0.1已经被四舍五入成一个与之很接近的计算机内部数字,以至于计算还没开始,一个很小的舍入错误就已经产生了。这也就是 0.1 + 0.2 不等于0.3 的原因。

如何避免这样的问题?

1.最好的方法就是我们想办法规避掉这类小数计算时的精度问题就好了,那么最常用的方法就是将浮点数转化成整数计算。因为整数都是可以精确表示的。通常的解决办法 就是 把计算数字 提升 10 的N次方 倍 再 除以 10的N次方。一般都用 1000 就行了。

JS 0.1+0.2不等于0.3的问题相关推荐

  1. php if语句等于不等于0,java判断long不等于0

    java判断long不等于0 [2021-02-01 13:28:29]  简介: php不等于符号输入的方法:1.可以使用BASIC.PASCIC类语言的不等于符号[<>]:2.可以使用 ...

  2. 判断一个doule等于0的正确方法

    doule进行数学运算时会出现精度问题,判断double是否等于0是不能用"d==0" 要用下面的方法: public static void main(String[] args ...

  3. C语言中判断浮点数是否等于0

    1.C语言中判断浮点数是否等于0: 2.C语言中判断两个浮点数是否相等: float.double分别遵循R32-24,R64-53的标准.他们尾数的位数分别是23.52,即误差在2^-23,2^-5 ...

  4. 解决JS中0.1+0.2不等于0.3

    console.log(0.1+0.2===0.3)// true or false?? 在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!= ...

  5. 【前端面试必读】在js中为什么0.1+0.2不等于0.3

    原因在于在JS中采用的IEEE 754的双精度标准,计算机内部存储数据的编码的时候,0.1在计算机内部根本就不是精确的0.1,而是一个有舍入误差的0.1.当代码被编译或解释后,0.1已经被四舍五入成一 ...

  6. js 为什么0.1+0.2不等于0.3

    当程序员在使用浮点数进行计算逻辑处理时,不注意,就可能出现问题, 记住,永远不要直接比较俩个浮点的大小 这个属于数字运算中的精度缺失的问题 在0.1 + 0.2这个式子中,0.1和0.2都是近似表示的 ...

  7. python0.1+0.2不等于0.3_为什么0.1 + 0.2不等于0.3?

    原标题:为什么0.1 + 0.2不等于0.3? 0.1 + 0.2不等于0.3这是一个普遍的问题,例如在JS控制台输入将得到0.30000000000000004 在python的控制台也是输出这个数 ...

  8. 如何解决JavaScript中0.1+0.2不等于0.3

    原文转载自:https://www.cnblogs.com/weshare/archive/2018/02/20/8455470.html >console.log(0.1+0.2===0.3) ...

  9. 深入理解 Node.js 中 EventEmitter源码分析(3.0.0版本)

    events模块对外提供了一个 EventEmitter 对象,即:events.EventEmitter. EventEmitter 是NodeJS的核心模块events中的类,用于对NodeJS中 ...

最新文章

  1. python logger
  2. 物联网平台 源码_国内首个智慧交通物联网平台发布
  3. 服务器虚拟机怎么控制,虚拟机可以控制云服务器吗
  4. NLP:对字符串按照一个、多个自定义分隔符进行分割、将列表转为字符串同时自定义连接符
  5. 转---SQL与EXCEL交互(导出/导入)
  6. db,dbms,dba_DBMS中的数据库管理员(DBA)
  7. @keyframes中translate和scale混用问题
  8. vue2实践揭秘pdf_《Vue2实践揭秘》源码
  9. sklearn机器学习实例
  10. HTTP协议之HTTP的结构
  11. 用BULK INSERT命令导入数据详解
  12. 随机森林筛选特征Matlab,特征筛选(随机森林)
  13. 20190916:(leetcode习题) 二叉树的层次遍历
  14. 操作系统之课程设计常用磁盘调度算法的实现,附源码
  15. 二总线芯片RF601
  16. DXP导入网络报表的方法
  17. 六、v4l2 ctrl 函数初始化---增加自定义接口v4l2_ctrl_new_custom
  18. 春节不出门!这三款超好评编程游戏,好玩到停不下来
  19. 2021江苏大学生编程大赛I题(省赛试水)
  20. JDBC连接数据库6个步骤

热门文章

  1. STCT: Sequentially Training Convolutional Networks for visual tracking
  2. hbase 中文乱码 查询_HBase的汉字乱码问题
  3. 什么是前端,后端???什么是后台???
  4. web前端培训的未来就业前景怎么样?
  5. Unity Shader Fresnel 菲涅尔反射
  6. linux 用户及密码
  7. (尚硅谷)javaweb学习笔记02-------JSP部分
  8. CS-NL(CVPR2020) Cross-Scale Non-Local Attention and Exhaustive Self-Exemplars Mining
  9. python实现获取搜索引擎式的城市天气预报及历史天气
  10. 中国脱硫石膏市场趋势报告、技术动态创新及市场预测