我有这段代码
$vad = 1.1;
print gettype($vad);
var_dump($vad);
这将输出:double
float(1.1)
那么在PHP中是double还是float?
我有这段代码
$vad = 1.1;
print gettype($vad);
var_dump($vad);
这将输出:double
float(1.1)
那么在PHP中是double还是float?
在PHP中,float
、double
和real
这三个数据类型没有区别。
在C语言层面上,所有的数据都以double
的形式存储。但实际大小仍然取决于平台。
请参阅手册以获取更多详细信息:
http://www.php.net/manual/zh/language.types.float.php
截至PHP 7.0.6在Windows上,比较此命令不使用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()的输出,但不会实际改变内存管理。
这可能解释了为什么在其他机器上,var_dump中看到的是double
而不是float
的一些疑问。
此外,无论是否使用xdebug,gettype
仍然返回string(6) "double"
。
在PHP 7.0.14版本中
function test(double $a) {
var_dump($a);
}
test(2.2111);
返回“致命错误:未捕获的类型错误:test()的第1个参数必须是double的实例,但传递了float”。
function test(float $a) {
var_dump($a);
}
test(2.2111);
将 2.2111 打印到屏幕上。
float
,它是官方类型名称,而且被语言支持得最好。 - Andrew Koster
function some( float $num){}
,当我使用some(17.23)
时,它会抛出 致命错误 some() 必须是实例化的浮点数,但传入了双精度型。 - Naveen DAreal
的数据类型。 - Muhammad Sherazis_real
函数,它是is_float
的别名... ; ) - Macmade(real)
作为类型提示,因为我们知道(double)
和(float)
已经是实数家族的一部分了。 - Muhammad Sheraz