Разница между float и double в php?
У меня есть этот код
$vad = 1.1;
print gettype($vad);
var_dump($vad);
это выведет:
double
float(1.1)
Итак, это double или float в php?
Ответы
Ответ 1
В PHP нет никакой разницы. float
, double
или real
являются одним и тем же типом данных.
На уровне C все хранится как double
.
Реальный размер по-прежнему зависит от платформы.
Подробнее см. в руководстве:
http://www.php.net/manual/en/language.types.float.php
Ответ 2
Для PHP они одинаковы. http://www.php.net/manual/en/language.types.float.php:
Числа с плавающей запятой (также называемые "float" , "doubleles" или "real numbers" ) могут быть указаны с использованием любого из следующих синтаксисов: [...]
Запутанная часть - это то, почему gettype (который вы не должны использовать, во всяком случае) возвращает "double" вместо "float" . Ответ http://de2.php.net/manual/en/function.gettype.php:
"double" (по историческим причинам "double" возвращается в случае float, а не просто "float" )
Ответ 3
Начиная с 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"
.