Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Fungsi baharu dalam PHP8: pelbagai teknik penggunaan fdiv()

Fungsi baharu dalam PHP8: pelbagai teknik penggunaan fdiv()

WBOY
WBOYasal
2023-05-16 13:10:521209semak imbas

Dengan pelancaran PHP8, fungsi baharu fdiv() turut muncul di hadapan pembangun. Ia boleh memudahkan kod, meningkatkan ketepatan dan kecekapan. Dalam artikel ini, kami akan meneroka pelbagai teknik penggunaan fdiv().

1. Tingkatkan ketepatan:

Dalam PHP7, kita boleh menggunakan fungsi bcdiv() untuk mencapai pengiraan ketepatan tinggi. Tetapi dalam PHP8, fungsi fdiv() baharu menyediakan kaedah yang lebih cekap dan mudah digunakan. Fungsi ini boleh mengendalikan nombor titik terapung dan mengembalikan hasil yang tepat. Ia boleh mengelakkan ralat pengiraan yang disebabkan oleh isu ketepatan titik terapung, yang amat penting dalam sesetengah senario yang melibatkan pengiraan perpuluhan dan mata wang.

Sebagai contoh, dalam versi terdahulu, jika kita ingin mengira nilai 0.1 tambah 0.2, pendekatan biasa ialah:

$sum = 0.1 + 0.2;
echo $sum; // 输出结果为 0.30000000000000004

Hasil ini jelas bukan seperti yang kita jangkakan, tetapi dalam PHP8 Kami boleh menggunakan fungsi fdiv() untuk mendapatkan hasil yang lebih tepat:

$sum = fdiv(0.1, 1) + fdiv(0.2, 1);
echo $sum; // 输出结果为 0.3

Ambil perhatian bahawa kita perlu menukar 0.1 dan 0.2 ke dalam bentuk pecahan, yang boleh diperoleh dengan membahagikannya dengan 1. Dengan cara ini, kami memastikan bahawa kami mengira pecahan dan bukan nombor titik terapung, dengan itu mengelakkan ralat yang disebabkan oleh ketepatan titik terapung.

2. Lebih pantas:

Selain meningkatkan ketepatan pengiraan, fdiv() juga boleh meningkatkan kelajuan pengiraan. Sebelum ini, menggunakan fungsi bcdiv() dalam PHP7 untuk mencapai pengiraan ketepatan tinggi memerlukan banyak sumber dan masa, tetapi kini kita boleh menggunakan fungsi fdiv() untuk menyelesaikan kerja ini dengan lebih mudah. Berikut ialah keputusan ujian yang membandingkan masa dan penggunaan memori kedua-dua kaedah:

// 使用 fdiv() 函数
$start = microtime(true);
$sum = 0;
for ($i = 1; $i <= 1000000; $i++) {
  $sum = fdiv($sum, 1) + fdiv(0.0000001, 1);
}
echo 'fdiv() 函数耗时:' . (microtime(true) - $start), ' 秒,内存使用:' . memory_get_usage(true) . ' bytes' . PHP_EOL;

// 使用 bcdiv() 函数
$start = microtime(true);
$sum = 0;
for ($i = 1; $i <= 1000000; $i++) {
  $sum = bcadd($sum, '0.0000001', 10);
}
echo 'bcdiv() 函数耗时:' . (microtime(true) - $start), ' 秒,内存使用:' . memory_get_usage(true) . ' bytes' . PHP_EOL;

Hasil output ialah:

fdiv() 函数耗时:0.41537404060364 秒,内存使用:262144 bytes
bcdiv() 函数耗时:4.497987985611 sec,内存使用:134217728 bytes

Kita dapat melihat bahawa apabila menggunakan fungsi fdiv(), pengiraan kelajuan adalah Ia lebih pantas dan penggunaan memori juga lebih kecil, yang bermaksud kita boleh menyelesaikan tugas dengan lebih cepat.

3. Pengiraan yang cekap:

Fungsi fdiv() bukan sahaja boleh digunakan untuk meningkatkan ketepatan dan kelajuan pengiraan, tetapi juga digunakan untuk pengiraan yang cekap. Dalam PHP8, kita boleh melakukan pengiraan pembahagian pada semua elemen dalam tatasusunan pada masa yang sama. Dalam contoh berikut, kita menggunakan fungsi fdiv() untuk membahagikan semua elemen dalam tatasusunan dengan 2:

$array = [10, 20, 30, 40, 50];
$res = array_map(fn($v) => fdiv($v, 2), $array);
print_r($res); // 输出结果为 [5,10,15,20,25]

Dengan menggunakan fungsi array_map(), kita boleh membahagikan setiap elemen dalam tatasusunan tanpa menggunakan gelung. Buat pengiraan.

Ringkasnya, fungsi fdiv() boleh meningkatkan kecekapan pengaturcaraan PHP kami dan ketepatan pengiraan. Apabila lebih ramai pengaturcara mula menggunakan fungsi ini, kami percaya ia akan menjadi perpustakaan standard dalam pengaturcaraan PHP.

Atas ialah kandungan terperinci Fungsi baharu dalam PHP8: pelbagai teknik penggunaan fdiv(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn