Відповіді:
Різниці в PHP немає. float, doubleАбо realтакі ж тип даних.
На рівні С все зберігається як double.
Реальний розмір все ще залежить від платформи.
Детальну інформацію див. У посібнику:
http://www.php.net/manual/en/language.types.float.php
function some( float $num){}, коли я використовую some(17.23)її, видає фатальну помилку, деякі () повинні бути екземпляром float, подвійним даним,
realв PHP поки немає такого типу даних .
is_realфункція, з псевдонімом is_float...; )
Для PHP вони однакові. http://www.php.net/manual/en/language.types.float.php :
Числа з плаваючою комою (також відомі як "плаваючі", "подвійні" або "реальні числа") можна вказати, використовуючи будь-який із наступних синтаксисів: [...]
Конфузна частина, чому gettype (який у будь-якому разі не слід використовувати) повертає "подвійний" замість "плавати". Відповідь http://de2.php.net/manual/en/function.gettype.php :
"подвійний" (з історичних причин "подвійний" повертається у випадку поплавця, а не просто "плавати")
Станом на 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, переданий для тестування (), повинен бути екземпляром даного подвійного плавання"
function test(float $a) {
var_dump($a);
}
test(2.2111);
Друкує 2.2111 на екран.