Pertanyaan PHP - GMP dan angka floating point?


Kode berikut menghasilkan 0, yang mana tidak benar:

$r = gmp_pow(gmp_init('-1.7976931348623157'), 308);
echo gmp_strval($r);

Saya mendapat kesan bahwa perpustakaan GMP mampu menangani angka floating point, atau saya telah membuat kesalahan dalam kode?


7
2017-08-05 02:15


asal


Jawaban:


Perpustakaan GMP mampu menangani angka floating point,

Ini bukan. Anda dapat mengujinya dengan:

echo gmp_strval(gmp_init('18')); // 18
echo gmp_strval(gmp_init('1.8')); // 0

Sekarang, kamu apa bisa lakukan adalah penggunaan BCMath sebagai gantinya:

$num = bcpow('-1.7976931348623157', '308');
echo $num;
echo floatval($num); // for a "prettier" format

10
2017-08-05 02:23