Maison  >  Article  >  développement back-end  >  Nouvelles fonctions en PHP8 : diverses techniques d'utilisation de fdiv()

Nouvelles fonctions en PHP8 : diverses techniques d'utilisation de fdiv()

WBOY
WBOYoriginal
2023-05-16 13:10:521178parcourir

Avec le lancement de PHP8, une nouvelle fonction fdiv() est également apparue devant les développeurs. Cela peut simplifier le code, améliorer la précision et l’efficacité. Dans cet article, nous explorerons diverses techniques d'utilisation de fdiv().

1. Améliorer la précision :

En PHP7, on peut utiliser la fonction bcdiv() pour réaliser des calculs de haute précision. Mais en PHP8, la nouvelle fonction fdiv() fournit une méthode plus efficace et plus simple à utiliser. Cette fonction peut gérer les nombres à virgule flottante et renvoyer un résultat exact. Cela peut éviter les erreurs de calcul causées par des problèmes de précision en virgule flottante, ce qui est particulièrement important dans certains scénarios impliquant des calculs décimaux et monétaires.

Par exemple, dans les versions précédentes, si nous voulions calculer la valeur de 0,1 plus 0,2, l'approche habituelle était :

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

Ce résultat n'est évidemment pas celui auquel nous nous attendions, mais en PHP8, nous pouvons utiliser la fonction fdiv() pour obtenir des résultats plus précis :

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

Notez que nous devons convertir 0,1 et 0,2 sous forme fractionnaire, qui peut être obtenue en les divisant par 1 . De cette façon, nous nous assurons que nous calculons des fractions et non des nombres à virgule flottante, évitant ainsi les erreurs causées par la précision de la virgule flottante.

2. Plus rapide :

En plus d'améliorer la précision du calcul, fdiv() peut également augmenter la vitesse de calcul. Auparavant, utiliser la fonction bcdiv() dans PHP7 pour réaliser des calculs de haute précision nécessitait beaucoup de ressources et de temps, mais nous pouvons désormais utiliser la fonction fdiv() pour effectuer ce travail plus facilement. Voici les résultats des tests comparant le temps et l'utilisation de la mémoire des deux méthodes :

// 使用 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;

Le résultat de sortie est :

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

Nous pouvons le voir lors de l'utilisation de fdiv() fonction , le calcul est beaucoup plus rapide et l'utilisation de la mémoire est plus petite, ce qui signifie que nous pouvons terminer la tâche plus rapidement.

3. Calcul efficace :

La fonction fdiv() peut non seulement être utilisée pour améliorer la précision et la vitesse de calcul, mais également pour un calcul efficace. En PHP8, nous pouvons effectuer des calculs de division sur tous les éléments d'un tableau en même temps. Dans l'exemple suivant, nous utilisons la fonction fdiv() pour diviser tous les éléments du tableau par 2 :

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

En utilisant la fonction array_map(), nous pouvons diviser chaque élément du tableau sans utiliser de les éléments de la boucle sont calculés.

Pour résumer, la fonction fdiv() peut améliorer l'efficacité de notre programmation PHP et la précision de nos calculs. À mesure que de plus en plus de programmeurs commenceront à utiliser cette fonction, nous pensons qu'elle deviendra une bibliothèque standard dans la programmation PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn