代码之家  ›  专栏  ›  技术社区  ›  lovespring

PHP中有“double”类型吗

php
  •  7
  • lovespring  · 技术社区  · 14 年前

    如果不是,那么如何声明一个双重类型的数字?

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

    可捕获的致命错误:传递给testfoat()的参数1必须是float的实例,double给定

    5 回复  |  直到 14 年前
        1
  •  7
  •   Felix Kling    14 年前

    更新:

    关于 type hinting :

    类型提示只能是 对象 数组 (从php 5.1开始)类型。不支持用int和string表示的传统类型。

    所以我不知道,但你可能会出错,因为 array object 支持类型。


    我不太确定你想要什么,但只有 float :

    浮点数(也称为“浮点数”、“双精度数”或“实数”)可以使用以下任何语法指定:

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

    在那里你还发现:

    转换为浮动

    有关转换字符串的信息 漂浮,看到 String conversion to numbers . 对于其他类型的值, 转换由执行 先将值转换为整数 然后浮起来。见 Converting to integer 更多信息。至于 php 5,如果一个对象 转换为浮动。

        2
  •  4
  •   Community CDub    7 年前

    这个 float PHP中的类型在内部实现为C double . C标准未规定此类尺寸,仅要求 sizeof(float) <= sizeof(double) <= sizeof(long double) .

    第6节5.2.5.10

    有三个 实浮点类型 ,指定为 浮动 , 双重的 长双倍 . 34) 类型的值集 浮动 是类型值集的子集 双重的 ;类型的值集 双重的 是类型值集的子集 长双倍 .

    (从 here )

        4
  •  2
  •   ZZ Coder    14 年前

    这个错误与float或double无关。由于类型提示只适用于数组或对象,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