У меня есть этот кодРазница между float и double в php?
$vad = 1.1;
print gettype($vad);
var_dump($vad);
это Выведет:
double
float(1.1)
Так что двойной или плавать в PHP?
У меня есть этот кодРазница между float и double в php?
$vad = 1.1;
print gettype($vad);
var_dump($vad);
это Выведет:
double
float(1.1)
Так что двойной или плавать в PHP?
В 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:
Floating point numbers (also known as "floats", "doubles", or "real numbers") can be specified using any of the following syntaxes: [...]
Запутанная часть поэтому GetType (которые вы не должны использовать, во всяком случае) возвращает «двойные» вместо «поплавка». Ответ http://de2.php.net/manual/en/function.gettype.php:
" double " (for historical reasons "double" is returned in case of a float , and not simply "float")
В РНР 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 передается для проверки() должен быть экземпляром дважды, поплавок дал".
function test(float $a) {
var_dump($a);
}
test(2.2111);
Печатает 2.2111 на экран.
уверен в этом? есть ли какая-то память об этом? – TheCrazyProfessor
У меня есть функция 'function some (float $ num) {}', когда я использую 'some (17.23)' it throws ** фатальная ошибка ** some() должен быть экземпляром float, double given, – NaveenDA
@NaveenDA What версия PHP? До PHP 7.0 подсказки скалярного типа были недоступны и вместо этого были бы интерпретированы как имена классов. Это похоже на то, что происходит там. –