关于0.3-0.2 != 0.1 的问题

这个问题,是我在用js项目开发的过程中,进行数值比较的时候,debugger发现数值不对,因此再去深入了解了这个问题点。

首先可以先看一个demo:

我在页面写了如下几行js代码


之后我在chrome调试页面查看:


对,就是这个现象,0.3 - 0.2 = 0.0999999999998

然后我去查阅了资料:

这是为什么呢?在《Javascript权威指南》中有提到,JS是不区分整数和浮点数的,JS采用的是IEEE 754标准定义的64位浮点格式表示数字,所以JS中的所有数字都是浮点数。按照JS的数字格式,整数有的范围是-2^53 ~ 2^53,而且只能表示有限个浮点数,能表示的个数为2^64 − 2^53 + 3

以上这段是我在google搜索中找到的解释。我们都知道,js是一门弱类型的语言,它不区分整数和浮点数,而浮点数,从纯数学的角度去理解,它是无穷个的,所以没有办法进行精确的表示实际上这并不是JavaScript仅有的问题,C/C++/Java甚至Matlab都有这个问题。

然而在js 里面我们怎么处理呢?办法很简单,根小时候做数学题一样,规定精确到小数点后几位就行了。我们用:

number.toFixed(x)


我们规定他的精度,采用以上方法就行了。

这样我们之前demo中的第一行代码的执行结果就是0.1了。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值