Heim  >  Artikel  >  Backend-Entwicklung  >  Neue Funktionen in PHP8: verschiedene Verwendungstechniken von fdiv()

Neue Funktionen in PHP8: verschiedene Verwendungstechniken von fdiv()

WBOY
WBOYOriginal
2023-05-16 13:10:521209Durchsuche

Mit der Einführung von PHP8 ist auch eine neue Funktion fdiv() für Entwickler erschienen. Es kann Code vereinfachen, Genauigkeit und Effizienz verbessern. In diesem Artikel werden wir verschiedene Verwendungstechniken von fdiv() untersuchen.

1. Genauigkeit verbessern:

In PHP7 können wir die Funktion bcdiv() verwenden, um hochpräzise Berechnungen zu erreichen. Aber in PHP8 bietet die neue Funktion fdiv() eine effizientere und benutzerfreundlichere Methode. Diese Funktion kann Gleitkommazahlen verarbeiten und ein genaues Ergebnis zurückgeben. Dadurch können Berechnungsfehler vermieden werden, die durch Probleme mit der Gleitkommagenauigkeit verursacht werden, was in einigen Szenarien mit Dezimal- und Währungsberechnungen besonders wichtig ist.

Wenn wir beispielsweise in früheren Versionen den Wert von 0,1 plus 0,2 berechnen wollten, war der übliche Ansatz:

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

Dieses Ergebnis ist offensichtlich nicht das, was wir erwartet hatten, aber in PHP8 können wir die Funktion fdiv() verwenden Genauere Ergebnisse erhalten:

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

Beachten Sie, dass wir 0,1 und 0,2 in eine Bruchform umwandeln müssen, die durch Division durch 1 erhalten werden kann. Auf diese Weise stellen wir sicher, dass wir Brüche und keine Gleitkommazahlen berechnen, und vermeiden so Fehler, die durch die Gleitkommagenauigkeit verursacht werden.

2. Schneller:

Zusätzlich zur Verbesserung der Berechnungsgenauigkeit kann fdiv() auch die Berechnungsgeschwindigkeit erhöhen. Früher erforderte die Verwendung der Funktion bcdiv() in PHP7 zum Erreichen hochpräziser Berechnungen viel Ressourcen und Zeit, aber jetzt können wir diese Arbeit mit der Funktion fdiv() einfacher erledigen. Hier sind die Testergebnisse, die die Zeit- und Speichernutzung der beiden Methoden vergleichen:

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

Die Ausgabe ist:

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

Wir können sehen, dass bei Verwendung der fdiv()-Funktion die Berechnungsgeschwindigkeit viel schneller ist, während die Speichernutzung gleich ist Außerdem bedeutet die Tatsache, dass wir kleiner sind, dass wir Dinge schneller erledigen können.

3. Effiziente Berechnung: Die Funktion

fdiv() kann nicht nur zur Verbesserung der Genauigkeit und Berechnungsgeschwindigkeit, sondern auch für eine effiziente Berechnung verwendet werden. In PHP8 können wir Divisionsberechnungen für alle Elemente in einem Array gleichzeitig durchführen. Im folgenden Beispiel verwenden wir die Funktion fdiv(), um alle Elemente im Array durch 2 zu dividieren:

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

Mit der Funktion array_map() können wir Berechnungen für jedes Element im Array durchführen, ohne eine Schleife zu verwenden.

Zusammenfassend lässt sich sagen, dass die Funktion fdiv() unsere PHP-Programmiereffizienz und Berechnungsgenauigkeit verbessern kann. Da immer mehr Programmierer diese Funktion verwenden, glauben wir, dass sie zu einer Standardbibliothek in der PHP-Programmierung werden wird.

Das obige ist der detaillierte Inhalt vonNeue Funktionen in PHP8: verschiedene Verwendungstechniken von fdiv(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn