php浮點數計算比較及取整不準確解決辦法

來源:互聯網
上載者:User
php浮點數計算比較及取整不準確解決方案

php有意思的現象,應該是很多程式設計語言都會有這樣的現象。這個是因為電腦的本身對浮點數識別的問題.....

[php] view plaincopy

  1. $f = 0.58;
  2. var_dump(intval($f * 100 *100)); //結果5799
  3. var_dump((float)($f * 100 *100)); //結果5800
  4. echo (int)((0.1+0.7)*10); //結果7
  5. echo (float)((0.1+0.7)*10); //結果8

[php] view plaincopy

  1. $a = 0.1;
  2. $b = 0.7;
  3. var_dump(($a + $b) == 0.8);
  4. //列印出來的值居然為 boolean false

[php] view plaincopy

  1. $a = 0.1;
  2. $b = 0.7;
  3. var_dump(bcadd($a,$b,2) == 0.8);// bool true

在浮點數計算的時候,切記不要把浮點數轉換成整形,否則會出現不可能預估的錯誤。

所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.