как я могу создать исключение, если приведение из строки в int привело к потере точности?
Есть ли способ на самом деле проверить до или после преобразования строки в int, была ли потеря точности, и создать исключение?
$id = "21321312412435453453453454"
$numId = (int) $id;
2 answers
Это должно сработать для вас:
(Только что использовал php predefined constants
для сравнения)
$id = "21321312412435453453453454";
if($id > PHP_INT_MAX)
echo "too big";
else
echo "okay";
Вывод:
too big
РЕДАКТИРОВАТЬ:
Для отрицательного значения вы просто можете определить константу следующим образом:
define('PHP_INT_MIN', ~PHP_INT_MAX);
Вы можете прочитать о PHP_INT_MAX
даже в руководстве: http://php.net/manual/en/language.types.integer.php
И цитата оттуда:
Размер целого числа зависит от платформы, хотя максимальное значение составляет около двух миллиард - это обычное значение (это 32 бита со знаком). 64-разрядные платформы обычно имеют максимальное значение около 9E18, за исключением Windows, которая всегда 32-разрядная. PHP не поддерживает целые числа без знака. Целочисленный размер может быть определен с помощью константы PHP_INT_SIZE и максимального значения с использованием константы PHP_INT_MAX начиная с PHP 4.4.0 и PHP 5.0.5.
Попробуйте привести его обратно к строке и сравнить их.