$a = 12345678912345678.8;
$b = 12345678912345678.9;
就這2個(gè)不同數(shù)字,if($a == $b){echo '相等';}結(jié)果輸出'相等',我知道是太大超出他的範(fàn)圍,單獨(dú)輸出$a的結(jié)果是: 1.2345678912346E 16十六進(jìn)位的,請(qǐng)問(wèn)像這種大的數(shù)據(jù)如何比較最好?
php BC高精確度函數(shù)庫(kù)
if(bcsub($a,$b,1)==0){
echo '相等';
}
經(jīng)過(guò)自己電腦上測(cè)試當(dāng)長(zhǎng)度超過(guò)14位元時(shí), PHP就會(huì)益出。 不一樣的系統(tǒng) 不一樣的PHP版長(zhǎng)度益出會(huì)不一樣。
相關(guān)資料 官方手冊(cè)
方法1:
$a = '12345678912345678.6';
$b = '12345678912345678.9';
if($a == $b) {
echo 1;
}
方法2:
這裡只提供下思路
如果想要直接透過(guò)浮點(diǎn)來(lái)比較沒(méi)有找到方法。
先將以.分隔
取得整數(shù)部分位數(shù),比較長(zhǎng)度,再比較大小。
諾整數(shù)部分相等再比較小數(shù)部分。
Tip:考慮到數(shù)的無(wú)限大,也要注意分隔之後的數(shù)長(zhǎng)度的益出,若益出再進(jìn)行分隔。