$a = 12345678912345678.8;
$b = 12345678912345678.9;
Dengan dua nombor yang berbeza ini, jika($a == $b){echo 'equal';} output hasil adalah 'equal' saya tahu ia terlalu besar dan melebihi julatnya Hasil daripada output $a sahaja : 1.2345678912346E +16 perenambelasan, apakah cara terbaik untuk membandingkan data besar tersebut?
php BC pustaka fungsi ketepatan tinggi
Selepas menguji pada komputer saya sendiri, apabila panjangnya melebihi 14 aksara, PHP akan gagal. Sistem yang berbeza dan versi PHP yang berbeza akan mempunyai panjang yang berbeza.
Manual rasmi maklumat berkaitan
Kaedah 1:
Kaedah 2:
Hanya idea berikut disediakan di sini
Kalau nak bandingkan terus melalui floating point pun tak boleh.
Pertama dipisahkan oleh
Dapatkan bilangan digit dalam bahagian integer, bandingkan panjang, dan kemudian bandingkan saiznya.
Jika bahagian integer adalah sama, kemudian bandingkan bahagian perpuluhan.
Petua: Memandangkan nombor itu tidak terhingga, anda juga harus memberi perhatian kepada panjang nombor selepas pemisahan.