Как я могу выдать исключение при приведении из строки к Int вызвало потерю точности?

Есть ли способ на самом деле проверить до или после приведения из строки к int, если была потеря точности и выдать исключение?

$id = "21321312412435453453453454"$numId = (int) $id;

2

Решение

Это должно работать для вас:

(Только что использовал 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.

4

Другие решения

Попробуйте привести его обратно к строке и сравнить два.

1

По вопросам рекламы [email protected]