2014-06-11 74 views
0

所以有人问我为我的家庭作业的一部分蒙上浮点数在整数PHP。问题是根据php.net没有这样的演员是可能的,我自己也找不到这个问题背后的概念。PHP类型转换

考虑以下几点:

$float = 1.92; 
$float += 2; 

这将刚刚替补他们造成3.92作为输出。


至于我能看到的可能(或者说允许)铸件如下:

允许的强制转换有:

(int), (integer) - cast to integer 
(bool), (boolean) - cast to boolean 
(float), (double), (real) - cast to float 
(string) - cast to string 
(array) - cast to array 
(object) - cast to object 
(unset) - cast to NULL (PHP 5) 

它是某种诡计的那他们向我们介绍了或者该任务是无效的?

+0

[PHP意外的浮点结果到int类型转换]的可能重复(http://stackoverflow.com/questions/3385685/php-unexpected-result-of-float-to-int-type-cast) –

+0

I不想转换它,而是输入。 –

+1

那么,为什么你认为你不能将一个浮点数转换为整数? –

回答

3

是否将浮子四舍五入到最接近的整数?在这种情况下:

$float = 1.92; 
$float += 2; 

echo round($float); 

输出4或直投:

$float = 1.92; 
$float += 2; 

echo (int) $float; 

输出3.

+0

我想第二个例子应该是有效的并且被接受为解决方案。我会继续。谢谢你的时间 :) –

0

是什么让你觉得你可以不投浮法为int?

php > $float = 1.92; 
php > var_dump($float); 
float(1.92) 
php > $int = 2 + (int)$float; 
php > var_dump($int); 
int(3) 
php > $int2 = (int)(2 + $float); 
php > var_dump($int2); 
int(3) 
0

您可以将浮点数总是转换为字符串,像你的代码

$float = 1.92; 
$float +=2; 
$int = (int)$float; 
echo $int; 

PHP总是支持浮点整数类型转换。有关更详细的说明,请参阅我的PHP type casting文章。