SQRT () est une fonction intégrée en PHP qui renvoie la racine carrée d'un nombre. La syntaxe est la suivante:
sqrt(float $num): float
Par exemple:
echo sqrt(2); // Sortir 1.4142135623731
Cette fonction renvoie un numéro de point flottant, basé sur le numéro de point flottant à double précision sous-jacent du système (double).
BCSQRT () est une fonction fournie par l'extension mathématique BC pour calculer les racines carrées en haute précision. La syntaxe est la suivante:
bcsqrt(string $operand, int $scale = 0): string
Par exemple:
echo bcsqrt('2', 50);
// Sortir 1.4142135623730950488016887242096980785696718753769480732
Contrairement à SQRT () , BCSQRT () renvoie une valeur de type de chaîne, qui peut spécifier le nombre de décimales (paramètre d'échelle ) du résultat.
Les nombres de points flottants utilisés par SQRT () ont des limitations naturelles en termes de précision. La précision des points flottants de PHP est généralement d'environ 14 bits, ce qui convient à la plupart des scénarios d'application quotidiens. Cependant, dans les scénarios impliquant des algorithmes financiers, informatiques scientifiques ou de chiffrement, une précision limitée entraînera des résultats inexacts.
BCSQRT () est une opération mathématique de haute précision basée sur les chaînes, et la précision est entièrement contrôlée par le développeur. Par exemple, nous pouvons facilement calculer la racine carrée d'une place décimale, ce qui est crucial pour les programmes qui nécessitent des calculs précis.
Exemple comparatif:
$num = '2';
echo 'sqrt: ' . sqrt((float)$num) . PHP_EOL;
echo 'bcsqrt: ' . bcsqrt($num, 100) . PHP_EOL;
La sortie peut être la suivante:
sqrt: 1.4142135623731
bcsqrt: 1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573
On peut voir que les résultats fournis par BCSQRT () sont beaucoup plus précis que SQRT () .
Calcul de haute précision <br> Permettez aux développeurs de contrôler la précision des décimales par eux-mêmes pour éviter les erreurs de points flottants.
Stabilité plus élevée <br> Pour des nombres très petits ou très grands, BCSQRT () se comporte plus stable et est moins sujet aux erreurs de débordement ou d'arrondi.
Large gamme d'applications <br> Il est particulièrement important dans les applications impliquant des opérations financières (telles que le calcul des intérêts, les changements de devises) et l'ingénierie scientifique.
Type de sécurité <br> La valeur de retour est une chaîne, qui est propice à la maintenance de l'intégrité et de la cohérence des données d'origine et d'éviter les erreurs d'arrondi à point flottant.
Supposons que nous ayons une application de crypto-monnaie qui nécessite des calculs de taux d'intérêt complexes pour les dépôts d'utilisateurs. Dans ce scénario, nous ne pouvons tolérer aucune erreur de précision.
$principal = '10000.00';
$rate = '0.05'; // 5%
$years = '3';
// Calculez la valeur d'intérêt du composé final:FV = P * (1 + r)^n
$growth = bcpow(bcadd('1', $rate, 10), $years, 20);
$final = bcmul($principal, $growth, 20);
echo 'Final amount after 3 years: ' . $final;
Le code ci-dessus évite complètement les calculs de points flottants, garantit la précision des calculs d'intérêt et convient au module d'application financière sur https://gitbox.net .