js中null为什么不等于0(JavaScript中0.10.2不等于0.3)
javascript
曾经不懂编程,也不懂计算机的底层原理,直到转行进入it行业,做了程序员,起初依然不知道还会有这种问题存在,写代码时间长了,经历的项目需求多了,遇到的问题也多了,自然而然,小编也碰到了这种浮点型数据精度丢失问题。0.1 0.2 != 0.3?这在现实生活中是难以理解的,然而,计算机的世界永远有很多我们所不知道的奥秘。
javascript精度丢失
相信很多猿类都遇到过此类的问题,那为什么会出现这种情况呢?究其根本原因,计算机底层是通过二进制进行计算的,而0.1在转换二进制时又是一连串循环,当然这可能还不是最底层,喜欢研究计算机底层原理的同学可以深入考究一下,今天咱们主要说一下如何解决这个问题。
计算机底层
首先,这种问题大家最先想到的就是对最后的和做两位小数保留,使用toFix(2)函数即可,如下图:
使用toFixed配合parseFloat
然而,小编今天使用的方法并不是这种方式,大家想一想,整数之间的加减运算肯定不会出现小数,那么我们就可以先把小数转为整数,然后进行运算,最后再把运算结果转为小数,如下图:
javaScript精度丢失
怎么样,这种方式是不是也很好,比起第一种方式,这种方式更加精确,也更加符合平时的思维逻辑;第一种方式虽然简单粗暴,但是,不好确定保留的小数位数。而后者可以封装一套组件,灵活按照小数位数进行整数和浮点型之间的装换,还是比较方便的。代码大家自行封装。
jquery
小编在php中也碰到过类似的问题,也可以用这种方式解决,当然php中有高精度函数,用起来很方面,大小感兴趣可以在网上搜一下。
好了,今天的分享就到这里,你有没有遇到过类似的问题,是怎么解决的?欢迎评论区留言指教~~
谢谢~~
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com