2016-08-03 89 views
1

有人可以告訴我爲什麼這個code返回doublephpPHP轉換爲int返回雙重

$personal_id = ((int) $person['born_number'] * 2); 

Gettype($personal_id)回報double這樣4294967294.0

我怎樣才能解決這個問題?謝謝。

+0

嘗試'intval($ person ['born_number'] * 2)'; – Afsar

+2

你的號碼對於整數來說太大了嗎? –

+0

是的,它對整數來說太大了。但如何以優雅的方式解決它? –

回答

1

爲什麼雙?因爲變量do不適合整數大小。

您可以使用gmp來模擬大整數。 http://php.net/manual/en/intro.gmp.php

但我認爲這是過度工程。如果使用字符串而不是整數?

$personalId = sprintf("%.0f", ($a*2)); 
+0

這看起來很不錯。謝謝。 –

0

試試這個;

$personal_id = floor($person['born_number'] * 2); 
+0

不起作用..... –

0

也許你應該嘗試intval()(cf. official documentation)

$personal_id = intval($person['born_number'] * 2); 
+0

在這種情況下,intval()返回-2。 –

+0

對於int來說太大了,您需要更改$ person ['born_number']。你將如何使用它,它從哪裏來? – Treast

0
$personal_id = (int)($born_number * 2); 
+0

這不起作用。它返回負值。 –

+0

你需要改變你的原始變量。 –