程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP學習記錄(浮點型)

PHP學習記錄(浮點型)

編輯:關於PHP編程

    <?php
    $a = 1.234;
    $b = 1.2e3;
    $c = 7E-10;
    ?>

    正則表達示如下:

    浮點數:     [0-9]+
    雙精度型:   ([0-9][.]{LNUM}) | ({LNUM}[.][0-9]*)
    指數表達式: [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

    =========================
    最大浮點數php代碼如下:
    <?php
      function float_max($mul = 2, $affine = 1) {
        $max = 1; $omax = 0;
        while((string)$max != 'INF') { $omax = $max; $max *= $mul; }

        for($i = 0; $i < $affine; $i++) {
          $pmax = 1; $max = $omax;
          while((string)$max != 'INF') {
            $omax = $max;
            $max += $pmax;
            $pmax *= $mul;
          }
        }
        return $omax;
      }
      echo "最大浮點數:" ;var_dump(float_max());
    ?>
    =========================
    結果如下(與平台相關):
    最大浮點數:float(1.79769313486E+308)

    關於浮點數精度的注意事項:

    簡單的十進制分數如同 0.1 或 0.7 在轉換為內部二進制的格式會丟失精度:
    例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是7.9。
    就是不可能精確的用有限位數表達某些十進制分數。
    例如,十進制的 1/3 變成了 0.3。
    所以
    1。永遠不要相信浮點數結果精確到了最後一位,
    2。也永遠不要比較兩個浮點數是否相等。
    3。如果確實需要更高的精度,應該使用任意精度數學函數或者 gmp 函數。

    自 PHP 5 起,如果試圖將對象轉換為浮點數,會發出一條 E_NOTICE 錯誤。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved