BCMath - arytmetyka liczb dużej precyzji BC Math &reftitle.intro; Dla potrzeb obliczeń arytmetycznych o dużej precyzji, PHP oferuje BCMath, który obsługuje liczby o dowolnej wielkości i precyzji do 2147483647 (lub 0x7FFFFFFF) części dziesiętnych (jeśli dostępna jest wystarczająca ilość pamięci), zapisanych jako typ string. Poprawne (tj. właściwie sformatowane) liczby BCMath są ciągami znaków pasującymi do wyrażenia regularnego /^[+-]?[0-9]*(\.[0-9]*)?$/. Przekazywanie wartości typu float (liczb zmiennoprzecinkowych) do funkcji BCMath, które oczekują typu string może nie przynieść oczekiwanego efektu ze względu na to, jak PHP konwertuje wartości float na string, gdyż ciąg znaków może być podany w notacji wykładniczej (nieobsługiwanej przez BCMath) oraz ponieważ przed PHP 8.0.0 separator części dziesiętnej był zależny od ustawień regionalnych (locale), a BCMath zawsze oczekuje użycia kropki. '0' $num2 = -0.000005; // (string) -0.000005 => '-5.05E-6' echo bcadd($num1, $num2, 6); // => '0.000000' setlocale(LC_NUMERIC, 'de_DE'); // używa przecinka jako separatora części dziesiętnej $num2 = 1.2; // (string) 1.2 => '1,2' echo bcsub($num1, $num2, 1); // => '0.0' ?> ]]> &reference.bc.setup; &reference.bc.reference; &reference.bc.bcmath.number;