js中null為什麼不等於0(JavaScript中0.10.2不等於0.3)
2023-04-13 11:32:02 1
javascript
曾經不懂編程,也不懂計算機的底層原理,直到轉行進入it行業,做了程式設計師,起初依然不知道還會有這種問題存在,寫代碼時間長了,經歷的項目需求多了,遇到的問題也多了,自然而然,小編也碰到了這種浮點型數據精度丟失問題。0.1 0.2 != 0.3?這在現實生活中是難以理解的,然而,計算機的世界永遠有很多我們所不知道的奧秘。
javascript精度丟失
相信很多猿類都遇到過此類的問題,那為什麼會出現這種情況呢?究其根本原因,計算機底層是通過二進位進行計算的,而0.1在轉換二進位時又是一連串循環,當然這可能還不是最底層,喜歡研究計算機底層原理的同學可以深入考究一下,今天咱們主要說一下如何解決這個問題。
計算機底層
首先,這種問題大家最先想到的就是對最後的和做兩位小數保留,使用toFix(2)函數即可,如下圖:
使用toFixed配合parseFloat
然而,小編今天使用的方法並不是這種方式,大家想一想,整數之間的加減運算肯定不會出現小數,那麼我們就可以先把小數轉為整數,然後進行運算,最後再把運算結果轉為小數,如下圖:
javaScript精度丟失
怎麼樣,這種方式是不是也很好,比起第一種方式,這種方式更加精確,也更加符合平時的思維邏輯;第一種方式雖然簡單粗暴,但是,不好確定保留的小數位數。而後者可以封裝一套組件,靈活按照小數位數進行整數和浮點型之間的裝換,還是比較方便的。代碼大家自行封裝。
jquery
小編在php中也碰到過類似的問題,也可以用這種方式解決,當然php中有高精度函數,用起來很方面,大小感興趣可以在網上搜一下。
好了,今天的分享就到這裡,你有沒有遇到過類似的問題,是怎麼解決的?歡迎評論區留言指教~~
謝謝~~
,