我有这段代码
$vad = 1.1;
print gettype($vad);
var_dump($vad);
这将输出:
double
float(1.1)
所以它在php中是double还是float?
答案 0 :(得分:138)
PHP没有区别。 float
,double
或real
是相同的数据类型。
在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打印到屏幕上。