Hari ini kami akan terus membawakan kepada anda kandungan siri amalan fungsi matematik PHP Jadi dalam artikel sebelumnya "Amali fungsi matematik PHP empat: Bundarkan nombor titik terapung dari sifar kepada bilangan tempat perpuluhan yang ditentukan 》Memperkenalkan anda cara untuk membundarkan nombor titik terapung dari sifar kepada bilangan tempat perpuluhan yang ditentukan Rakan yang memerlukan boleh mempelajarinya~
Tema artikel ini adalah untuk mengajar anda cara menulis fungsi PHP untuk. dapatkan nombor titik terapung rawak. Pertama sekali, izinkan saya memperkenalkan secara ringkas kepada anda apa itu nombor titik terapung juga dipanggil nombor ketepatan berganda atau nombor nyata Nombor ini boleh ditakrifkan dalam PHP menggunakan mana-mana sintaks berikut ><?php $a = 1.234; $b = 1.2e3; $c = 7E-10; $d = 1_234.567; // 从 PHP 7.4.0 开始支持 ?>
Hasil keluaran ialah:
<?php function rand_float($st_num=0,$end_num=1,$mul=1000000) { if ($st_num>$end_num) return false; return mt_rand($st_num*$mul,$end_num*$mul)/$mul; } echo rand_float()."<br>"; echo rand_float(0.6)."<br>"; echo rand_float(0.5,0.6)."<br>"; echo rand_float(0,20)."<br>"; echo rand_float(0,3,2)."<br>"; echo rand_float(0,2,20)."<br>"; ?>
0.353804 0.715058 0.598421 13.484704 0.5 1.4
Seperti yang ditunjukkan di atas, kita boleh mendapatkan nombor titik terapung rawak.
Di sini saya memperkenalkan kepada anda fungsi
fungsi:mt_rand
fungsi mt_rand() menggunakan algoritma Mersenne Twister untuk menjana integer rawak.
Fungsi ini adalah pilihan yang lebih baik untuk menjana nilai rawak, mengembalikan hasil 4 kali lebih cepat daripada fungsi rand() jika anda mahukan nilai rawak antara 10 dan 100 (termasuk) Untuk integer, gunakan mt_rand (10,100) .
Sintaksnya ialah:
Nilai pulangan ialah integer rawak antara min (atau 0) dan maks (atau mt_getrandmax()) (termasuk nilai sempadan). Jika max < min maka kembalikan FALSE.mt_rand(); or mt_rand(min,max);
注:浮点数的精度 浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。 此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。 所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
Atas ialah kandungan terperinci Amalan Fungsi Matematik PHP 5: Dapatkan Nombor Titik Terapung Rawak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!