$a = 12345678912345678.8; $b = 12345678912345678.9;
就這2個不同數字,if($a == $b){echo '相等';}結果輸出'相等',我知道是太大超出他的範圍,單獨輸出$a的結果是: 1.2345678912346E 16十六進位的,請問像這種大的數據如何比較最好?
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:這裡只提供下思路
如果想要直接透過浮點來比較沒有找到方法。
先將以.分隔
取得整數部分位數,比較長度,再比較大小。
諾整數部分相等再比較小數部分。
Tip:考慮到數的無限大,也要注意分隔之後的數長度的益出,若益出再進行分隔。
php BC高精確度函數庫
雷雷
經過自己電腦上測試當長度超過14位元時, PHP就會益出。 不一樣的系統 不一樣的PHP版長度益出會不一樣。
相關資料 官方手冊
方法1:
方法2:
這裡只提供下思路
如果想要直接透過浮點來比較沒有找到方法。
先將以.分隔
取得整數部分位數,比較長度,再比較大小。
諾整數部分相等再比較小數部分。
Tip:考慮到數的無限大,也要注意分隔之後的數長度的益出,若益出再進行分隔。
雷雷