我有这个代码
$vad = 1.1;
print gettype($vad);
var_dump($vad);
Run Code Online (Sandbox Code Playgroud)
这将输出:
double
float(1.1)
Run Code Online (Sandbox Code Playgroud)
所以它是双重或浮动在PHP?
Mac*_*ade 145
PHP没有区别.float,double或者real是相同的数据类型.
在C级别,所有内容都存储为double.
实际大小仍然取决于平台.
有关详细信息,请参阅手册:http:
//www.php.net/manual/en/language.types.float.php
Vic*_*let 19
对于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"在浮动的情况下返回,而不仅仅是"浮动")
从Windows上的PHP 7.0.6开始,在没有 xdebug的情况下比较此命令:
$ php -r 'var_dump(28.4);'
float(28.4)
Run Code Online (Sandbox Code Playgroud)
并与 Xdebug的:
$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)
Run Code Online (Sandbox Code Playgroud)
请注意,这只会更改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);
Run Code Online (Sandbox Code Playgroud)
返回“致命错误:未捕获的类型错误:传递给 test() 的参数 1 必须是 double 的实例,给定的浮点数”。
function test(float $a) {
var_dump($a);
}
test(2.2111);
Run Code Online (Sandbox Code Playgroud)
在屏幕上打印 2.2111。