PHP – Получение внутренней переменной float

Я пытаюсь установить дельта, мне нужно, когда вы делаете float-сравнение в PHP. Я хочу более внимательно рассмотреть мои переменные, чтобы увидеть разницу.

У меня есть 2 вычисленных переменных, $ a, $ b.

$a = some_function(); $b = some_other_function(); 

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

Я хочу сравнить их с этой формулой, где мне нужно указать дельта:

 $delta = 0.00001; if (abs($a-$b) < $delta) { echo "identical"; } 

var_dump ($ a, $ b) возвращает 1.6215; 1,6215. но я знаю, что они не совсем равны, потому что

 var_dump($a === $b); 

оценивает значение false;

Почему var_dump() выводит внутреннее значение?

В PHP печатные значения чисел с плавающей запятой зависят от «точности» конфигурации PHP.

Вы можете изменить это с помощью:

 ini_set('precision', YOUR_DESIRED_PRECISION_AS_INTEGER); 

Например, с помощью:

 ini_set('precision', 18); 

Ваши номера могут отображаться примерно так:

float 1.62149999999999994

float 1.6214999999999995

Так что теперь разница между ними более ясна.

Таким образом, ваша дельта может быть: $ delta = 0.00000000000001; Это действительно зависит от точности, которую вы ищете.

Если вам нужно делать точные математические вычисления, посмотрите на математические функции BC.


Ссылки / Источники

PHP – числа с плавающей точкой

PHP – Числа с плавающей запятой – Внесенные пользователем примечания – демиевые линии в сети deminy dot

Codepad

Если вы не хотите редактировать файл конфигурации … вы можете использовать round(val, precision) в some_function() и some_other_function() . Таким образом, вы можете вернуть результаты в нужную вам точность. Проверьте:
http://php.net/manual/en/function.round.php