2009-01-05 22 views
5

如何在php中用小數點拆分數字?在php中用小數點拆分一個數字

我有$ num = 15/4;將$ num變成3.75。我想打出3組75份,所以將$ int = 3和$ DEC = 75我不工作的代碼是:

$num = 15/4; // or $num = 3.75; 
list($int, $dec) = split('.', $num); 

但導致空$ int和$(分解)。

在此先感謝。

回答

20

如果explode數的小數表示,你失去精度。如果你不介意,那就這樣吧(對於文本表示來說沒關係)。考慮到語言環境!我們比利時人使用逗號(至少是非編程的:)。

如果記(用於計算例如),您可以使用floor功能:

$num = 15/4 
$intpart = floor($num) // results in 3 
$fraction = $num - $intpart // results in 0.75 

注:這是一個正數。對於負數,您可以反轉該符號,使用積極方法,並重新轉換int部分的符號。

+0

巴西人也使用逗號作爲小數點分隔符和句點千分位分隔符。使用http://us2.php.net/manual/en/function.localeconv.php找出正確的分隔符是爲您的區域 – 2012-04-03 22:32:11

6
$num = 15/4; // or $num = 3.75; 
list($int, $dec) = explode('.', $num); 
7

嘗試explode

list($int,$dec)=explode('.', $num); 

因爲你並不真正需要使用正則表達式的基礎分。 Split不適合你作爲'。'字符需要逃避以提供文字匹配。

+0

注意你這樣做會失去精確性 - 不要以此爲基礎進行計算。 – xtofl 2009-01-05 12:25:29

4
$int = $num > 0 ? floor($num) : ceil($num); 
$dec = $num - $int; 

如果你想$dec爲正時$num是負的(像其他的答案),你可以這樣做:

$dec = abs($num - $int); 
+0

負數不合格,例如如果$ num = -17.3,那麼$ int = 18和$ dec = 0.7 – 2009-01-05 12:12:00

+0

ok,修改它。 – 2009-01-05 12:14:46

1
$num = 15/4; 
substr(strrchr($num, "."), 1) 
2
$num = 3.75; 
$fraction = $num - (int) $num; 
0

在情況下,當你不想失去精度,您可以使用這些:

$number = 10.10; 
$number = number_format($number, 2, ".", ","); 
sscanf($number, '%d.%d', $whole, $fraction); 

// you will get $whole = 10, $fraction = 10 
0

這適用於正數和負數:

$num = 5.7; 
$whole = (int) $num;   // 5 
$frac = $num - (int) $num; // .7