php - 過大浮點型資料比較大小
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-21 10:11:00
0
4
859
$a = 12345678912345678.8;
$b = 12345678912345678.9;

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

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回覆(4)
某草草

php BC高精確度函數庫

if(bcsub($a,$b,1)==0){
    echo '相等';
}
扔个三星炸死你

雷雷

仅有的幸福

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

相關資料 官方手冊

方法1:

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

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

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

  1. 先將以.分隔

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

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

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

洪涛

雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板