Ответы:
В PHP нет разницы. float
, double
или real
имеют тот же тип данных.
На уровне C все хранится в виде файла double
.
Реальный размер по-прежнему зависит от платформы.
Подробнее см. В руководстве:
http://www.php.net/manual/en/language.types.float.php
function some( float $num){}
, когда я ее использую, some(17.23)
выдает фатальную ошибку, some () должен быть экземпляром float, заданным двойным,
real
в php пока нет такого типа данных .
is_real
функция, с псевдонимом is_float
...; )
Для 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, а не просто "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);
Возвращает «Неустранимая ошибка: Uncaught TypeError: аргумент 1, переданный в test (), должен быть экземпляром double, задано float».
function test(float $a) {
var_dump($a);
}
test(2.2111);
Выводит на экран 2.2111.