Вступ

Для математичних обчислень з довільною точністю PHP пропонує розширення BC Math, яке дозволяє оперувати числами будь-якого розміру і точності, представленими у вигляді рядків, аж до 2147483647 (0x7FFFFFFF) знаків або обмежуючись виділеною пам'яттю.

Правильними числами для BCMath є рядки, що відповідають регулярному виразу /^[+-]?[0-9]*(\.[0-9]*)?$/.

Застереження

Передавання числа типу float в функції BCMath, які очікують операнди типу string, може не мати бажаного ефекту через спосіб, яким PHP перетворює float-значення в string, а саме: рядок (string) може отримати експонентний запис числа (що не підтримується BCMath); до PHP 8.0.0 символ десяткового розділювача залежить від локалі (тоді як BCMath очікує крапку).

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

setlocale(LC_NUMERIC, 'de_DE'); // розділювач — кома
$num2 = 1.2; // (string) 1.2 => '1,2'
echo bcsub($num1, $num2, 1); // => '0.0'
?>
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top