6

如何在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 和 $dec 为空。

提前致谢。

4

8 回答 8

23

如果你explode用十进制表示数字,你会失去精度。如果您不介意,那就这样吧(对于文本表示来说没关系)。考虑语言环境!我们比利时人使用逗号(至少是非编程的:)。

如果你介意(例如计算),你可以使用这个floor函数:

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

注意:这是正数。对于负数,您可以反转符号,使用正方法,并重新反转 int 部分的符号。

于 2009-01-05T12:24:09.300 回答
7

尝试爆炸

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

因为您实际上并不需要使用基于正则表达式的拆分。拆分不适合你作为一个'。字符需要转义以提供文字匹配。

于 2009-01-05T11:44:40.423 回答
6
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
于 2009-01-05T11:43:26.993 回答
4
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;

如果你想$dec在消极时保持积极$num(就像其他答案一样),你可以这样做:

$dec = abs($num - $int);
于 2009-01-05T12:08:24.230 回答
2
$num = 3.75;
$fraction = $num - (int) $num;
于 2013-05-02T20:57:50.310 回答
1
$num = 15/4;
substr(strrchr($num, "."), 1)
于 2012-04-03T22:29:47.543 回答
1

这适用于正数和负数:

$num = 5.7;
$whole = (int) $num;         //  5
$frac  = $num - (int) $num;  // .7
于 2016-02-06T14:01:10.420 回答
0

如果您不想失去精度,可以使用这些:

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

// you will get $whole = 10, $fraction = 10
于 2014-09-25T09:59:12.673 回答