最近經過一個學長的題了解php弱類型的時候,發現了一個奇怪的現象。php
主要問題在這樣一段代碼:測試
$c=(int)((0.1+$b)*10);
當$b=0.6,0.8以及其餘值的時候都正常spa
將關鍵代碼拆開分別檢測其類型及值,如上圖3d
而當$b=0.7的時候code
顯示浮點型的8轉成整型就成了7,這是怎麼回事?$b爲其餘數都是正常的,惟獨$b=0.7時不正常。blog
因而接着測試一下直接將8.0轉成整型看看結果get
結果是正常的,並無變成7class
而後又試試將0.8乘以10再轉成整型,看看結果百度
結果仍是正常的整型8im
因而,再日後推一步,將0.8拆成0.7+0.1
終於顯示不正常結果了,雖然還並不知道是什麼緣由
而後接着測試,將0.1換成0.2
結果是正常的……這就有點納悶了,難道只有8有影響嗎?
最後再作一個測試,將0.8換成0.08,拆成0.07+0.01,最後乘以100
結果竟然是正常的…很奇怪的現象,不知道是怎麼回事
後來在百度上大概搜了一下,查不到什麼資料,不過找到這樣的一篇文章------->【戳我】
這篇文章裏說的狀況跟我遇到的狀況差很少吧
可能就是浮點型數字轉成整型的數字時會損失精度吧
之後找到更好的解釋再補充…