Задача такая. Необходимо перемножить два числа с плавающей точкой с сохранением определенного кол-ва десятичных разрядов после запятой (например, 8). Для этого обычно используются функции библиотеки bcmath. Проблема в том, что они, похоже, неправильно понимают числа с фиксированной точкой типа 1.54е-5. Проиллюстрирую. Код (Text): <?php $d=8; // Число цифр после запятой в дробных величинах bcscale($d); $a=0.0000154; $b=45.548; $res1=$a*$b; $res2=bcmul($a,$b); echo "a = $a;<br>"; echo "b = $b;<br>"; echo "res1 = $res1;<br>"; echo "res2 = $res2;"; ?> Получаем: a = 1.54E-5; b = 45.548; res1 = 0.0007014392; res2 = 0.000; А ведь res2 должен быть равен 0.00070143. При этом, если увеличить а в 10 раз, оно будет отображаться как 0,000154 и результат выйдет верным: 0.00701439. Так как же добиться верного результата для мат. операций, где один из операндов < 0.0001 и > 0?
Савсэм не помнил, но нашел поиском по этому форуму. http://php.ru/forum/viewtopic.php?t=848 ... F%E4%EE%E2
В том посте, сдается мне, похожая проблема, и она тоже не разрешена средствами пхп... Ф-я формат_намбер() не годится, понятное дело...