BC Math
PHP Manual

Introduction

Pour les calculs mathématiques d'une grande précision, PHP fournit un calculateur binaire, qui supporte n'importe quelle précision et n'importe quelle taille de nombres jusqu'à 2147483647 (ou 0x7FFFFFFF) décimales, s'il y a suffisamment de mémoire, représentés sous la forme d'une chaîne de caractères.

Attention

Passing values of type float to a BCMath function which expects a string as operand may not have the desired effect due to the way PHP converts float values to string, namely that the string may be in exponential notation (what is not supported by BCMath), and that the decimal separator is locale dependend (while BCMath always expects a decimal point). Le passage de valeurs de type float à une fonction BCMath qui attend une string comme opérande peut ne pas avoir l'effet désiré en raison de la façon dont PHP convertit les valeurs float en string, à savoir que la string peut être en notation exponentielle (ce qui n'est pas pris en charge par BCMath), et que le séparateur décimal dépend de la locale (tandis que BCMath attend toujours un point décimal).

<?php
$num1 
0// (string) 0 => '0'
$num2 = -0.000005// (string) -0.000005 => '-5.05E-6'
echo bcadd($num1$num26); // => '0.000000'

setlocale(LC_NUMERIC'de_DE'); // utilise une virgule décimale
$num2 1.2// (string) 1.2 => '1,2'
echo bcsub($num1$num21); // => '0.0'
?>

BC Math
PHP Manual