есть ли «двойной» тип в PHP?

если нет, то как объявить двойной тип номера?

function testFloat(float $f) { return $f; } echo testFloat(1.2); 

Допустимая фатальная ошибка: аргумент 1, переданный testFloat (), должен быть экземпляром float, double given

Solutions Collecting From Web of "есть ли «двойной» тип в PHP?"

Обновить:

Что касается типа намека :

Тип подсказки может быть только типа объекта и массива (начиная с PHP 5.1). Традиционный тип hinting с int и string не поддерживается.

Поэтому я не знаю, но, вероятно, вы получите ошибку, потому что поддерживаются только array и типы object .


Я не совсем уверен, что вы хотите, но есть только float :

Числа с плавающей запятой (также называемые «float», «doubleles» или «real numbers») могут быть указаны с использованием любого из следующих синтаксисов:

 <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> 

и там вы найдете также:

Преобразование в float

Информацию о преобразовании строк в float см. В разделе Преобразование строк в числа . Для значений других типов преобразование выполняется путем преобразования значения в целое число сначала, а затем для плавания. Дополнительную информацию см. В разделе Преобразование в целое число . Начиная с PHP 5, создается уведомление, если объект преобразуется в float.

Тип float в PHP реализуется внутренне как C double . Размер такого типа не указан стандартом C, для которого требуется только sizeof(float) <= sizeof(double) <= sizeof(long double) .

§6.2.5.10

Существует три реальных плавающих типа , обозначаемых как float , double и long double . 34) Набор значений типа float является подмножеством набора значений типа double ; набор значений типа double является подмножеством набора значений типа long double .

( отсюда )

Ошибка не имеет ничего общего с float или double. Поскольку тип hinting работает только с массивом или объектом, PHP считает, что «float» – это класс. Не используйте тип-намеки для примитивных скалярных типов. PHP – это нетипизированный язык. Это не имеет смысла делать это.

Для дальнейшего продвижения моей точки зрения вы можете попробовать этот пример,

 function testFloat(integer $f) { return $f; } echo testFloat(1); 

Вы получаете аналогичную ошибку,

 Catchable fatal error: Argument 1 passed to testFloat() must be an instance of integer, integer given, called in /private/tmp/test.php on line 8 and defined in /private/tmp/test.php on line 3