搜尋

首頁  >  問答  >  主體

php - 過大浮點型資料比較大小

$a = 12345678912345678.8;
$b = 12345678912345678.9;

就這2個不同數字,if($a == $b){echo '相等';}結果輸出'相等',我知道是太大超出他的範圍,單獨輸出$a的結果是: 1.2345678912346E 16十六進位的,請問像這種大的數據如何比較最好?

曾经蜡笔没有小新曾经蜡笔没有小新2791 天前913

全部回覆(4)我來回復

  • 某草草

    某草草2017-06-21 10:13:00

    php BC高精確度函數庫

    if(bcsub($a,$b,1)==0){
        echo '相等';
    }

    回覆
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-21 10:13:00

    雷雷

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-06-21 10:13:00

    經過自己電腦上測試當長度超過14位元時, PHP就會益出。 不一樣的系統 不一樣的PHP版長度益出會不一樣。

    相關資料 官方手冊

    方法1:

    $a = '12345678912345678.6';
    $b = '12345678912345678.9';
    if($a == $b) {
        echo 1;
    }

    方法2:
    這裡只提供下思路

    如果想要直接透過浮點來比較沒有找到方法。

    1. 先將以.分隔

    2. 取得整數部分位數,比較長度,再比較大小。

    3. 諾整數部分相等再比較小數部分。

    Tip:考慮到數的無限大,也要注意分隔之後的數長度的益出,若益出再進行分隔。

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-21 10:13:00

    雷雷

    回覆
    0
  • 取消回覆