Разница между float и double в php?


у меня есть этот код

$vad = 1.1;

print gettype($vad);

var_dump($vad);

это будет выход:

double
float(1.1) 

Так это double или float в php?

4 96
php

4 ответа:

нет никакой разницы в PHP. float,double или real имеют один и тот же тип данных.

на уровне C все хранится как double.
Реальный размер по-прежнему зависит от платформы.

см. руководство для получения более подробной информации:
http://www.php.net/manual/en/language.types.float.php

для PHP они одинаковы. http://www.php.net/manual/en/language.types.float.php :

числа с плавающей запятой (также известные как "поплавки", "двойники" или "действительные числа") могут быть указаны с помощью любого из следующих синтаксисов: [...]

запутанная часть заключается в том, почему gettype (который вы не должны использовать, в любом случае) возвращает "double" вместо "float". Ответ http://de2.php.net/manual/en/function.gettype.php:

"double" (по историческим причинам "double" возвращается в случае поплавка, а не просто "float")

начиная с PHP 7.0.6 на Windows, сравнивая эту команду без xdebug:

$ php -r 'var_dump(28.4);'
float(28.4)

и С xdebug:

$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)

обратите внимание, что это только изменяет вывод var_dump (), но не фактическое управление памятью.

это может решить некоторые проблемы, почему вы видите double вместо float показано в var_dump на некоторых других машинах.

также, С или без xdebug,gettype возвращает string(6) "double".

в PHP 7.0.14

function test(double $a) {
    var_dump($a);
}
test(2.2111);

возвращает "Fatal error: Uncaught TypeError: Аргумент 1, переданный test (), должен быть экземпляром double, float given".

function test(float $a) {
    var_dump($a);
}
test(2.2111);

выводит на экран 2.2111.