Возможен ещё вариант:
CODE:$c = sprintf("%.0f", $a + $b);
В этом случае число будет приведено к нужной Вам форме, однако из-за переполнения мантиссы числа содержимое младших разрядов может быть неопределённым. Например, следующий фрагмент:
CODE:<?php
$a = 3;
$b = 12345678901234567;
$c = sprintf("%.0f", $a + $b);
echo $c;
?>
вместо ожидаемого результата 12345678901234570 напечатает 12345678901234572. Двойка в конце как раз и вызвана переполнением. К сожалению, работа с более широкой мантиссой в PHP не предусмотрена. Однако в PHP есть функции, позволяющие осуществлять арифметические операции над числами произвольной точности, представленными в виде строк. В Вашем случае рекомендую пользоваться именно ими. Одна из таких функций - функция сложения bcadd(). Вот пример её использования:
CODE:<?php
$a = '3';
$b = '12345678901234567';
$c = bcadd($a, $b);
echo $c;
?>
Данный пример напечатает верный результат - 12345678901234570. Обратите внимание на то, что значения переменных-слагаемых $a и $b заключены в кавычки. Это необходимо для того, чтобы PHP присваивал им значения-строки, а не числа. В базе данных (или в файле при хранении данных методом сериализации) необходимо также сохранять эти значения как строки. Иначе может возникнуть всё та же проблема с переполнением мантиссы числа, что и в первом случае |