php中的float和double之间的区别?

时间:2010-07-19 12:10:08

标签: php

我有这段代码

$vad = 1.1;

print gettype($vad);

var_dump($vad);

这将输出:

double
float(1.1) 

所以它在php中是double还是float?

4 个答案:

答案 0 :(得分:138)

PHP没有区别。 floatdoublereal是相同的数据类型。

在C级,所有内容都存储为double 实际大小仍然取决于平台。

有关详细信息,请参阅手册:
http://www.php.net/manual/en/language.types.float.php

答案 1 :(得分:18)

对于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”,而不是简单地“浮动”)

答案 2 :(得分:6)

从Windows上的PHP 7.0.6开始,比较此命令不带 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"

答案 3 :(得分:1)

在PHP 7.0.14中

function test(double $a) {
    var_dump($a);
}
test(2.2111);

返回“致命错误:未捕获的TypeError:传递给test()的参数1必须是double的实例,浮点数为”。

function test(float $a) {
    var_dump($a);
}
test(2.2111);

将2.2111打印到屏幕上。