js中null为什么不等于0(JavaScript中0.10.2不等于0.3)(1)

javascript

曾经不懂编程,也不懂计算机的底层原理,直到转行进入it行业,做了程序员,起初依然不知道还会有这种问题存在,写代码时间长了,经历的项目需求多了,遇到的问题也多了,自然而然,小编也碰到了这种浮点型数据精度丢失问题。0.1 0.2 != 0.3?这在现实生活中是难以理解的,然而,计算机的世界永远有很多我们所不知道的奥秘。

js中null为什么不等于0(JavaScript中0.10.2不等于0.3)(2)

javascript精度丢失


相信很多猿类都遇到过此类的问题,那为什么会出现这种情况呢?究其根本原因,计算机底层是通过二进制进行计算的,而0.1在转换二进制时又是一连串循环,当然这可能还不是最底层,喜欢研究计算机底层原理的同学可以深入考究一下,今天咱们主要说一下如何解决这个问题。

js中null为什么不等于0(JavaScript中0.10.2不等于0.3)(3)

计算机底层


首先,这种问题大家最先想到的就是对最后的和做两位小数保留,使用toFix(2)函数即可,如下图:

js中null为什么不等于0(JavaScript中0.10.2不等于0.3)(4)

使用toFixed配合parseFloat


然而,小编今天使用的方法并不是这种方式,大家想一想,整数之间的加减运算肯定不会出现小数,那么我们就可以先把小数转为整数,然后进行运算,最后再把运算结果转为小数,如下图:

js中null为什么不等于0(JavaScript中0.10.2不等于0.3)(5)

javaScript精度丢失


怎么样,这种方式是不是也很好,比起第一种方式,这种方式更加精确,也更加符合平时的思维逻辑;第一种方式虽然简单粗暴,但是,不好确定保留的小数位数。而后者可以封装一套组件,灵活按照小数位数进行整数和浮点型之间的装换,还是比较方便的。代码大家自行封装。


js中null为什么不等于0(JavaScript中0.10.2不等于0.3)(6)

jquery

小编在php中也碰到过类似的问题,也可以用这种方式解决,当然php中有高精度函数,用起来很方面,大小感兴趣可以在网上搜一下。


好了,今天的分享就到这里,你有没有遇到过类似的问题,是怎么解决的?欢迎评论区留言指教~~

谢谢~~

,