2014-06-11 113 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文章。