PHP入門(一):關於浮點數的小細節

導師培訓出了這樣一個題目:

 echo $a = floor((0.1+0.8)*10);

查了查floor()函數的解釋,如以下所示:

   “返回不大於 value 的下一個整數,將 value 的小數部分捨去取整。floor() 返回的類型仍然是 float,因爲 float 值的範圍通常比 integer 要大。”

  實踐和手痠都得出,上題答案是:9.

   你認爲自己學會了這個函數了麼?或者說徹底理解了浮點型了麼?

讓我們試試另一個特殊的題目:

  echo $a = floor((0.1+0.7)*10);

這個語句會輸出什麼結果呢?

8?

不!

實際上,輸出的是:7!

   這是因爲我們注意力都放在了函數的功能實現上,因而忽略了返回類型是浮點型這一特點。

讓我們繼續看看 php手冊上的解釋:

wKioL1MExUagBvEQAAIlhQOanfc185.jpg

將0.1和0.7轉化成二進制格式進行計算再換算成十進制,也就明白了其中的妙處。


另外,提醒自己,在調用函數的時候,除了要注意功能和使用場景外,更要清楚知道其變量的數據類型及其使用範圍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章