在php中按小数点分割数字

时间:2009-01-05 11:40:24

标签: php split

如何在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。

提前致谢。

8 个答案:

答案 0 :(得分:20)

如果您explode数字的十进制表示,则会丢失精度。如果你不介意,那就这样吧(这对于文本表示来说是可以的)。考虑到区域设置!我们比利时人使用逗号(至少是非编程的:)。

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

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

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

答案 1 :(得分:7)

尝试explode

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

因为您实际上不需要使用基于正则表达式的拆分。 Split并不是为你工作的''。角色需要转义才能提供文字匹配。

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

如果您希望$dec$num为否定时为正(如其他答案),您可以这样做:

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

答案 4 :(得分:2)

$num = 3.75;
$fraction = $num - (int) $num;

答案 5 :(得分:1)

$num = 15/4;
substr(strrchr($num, "."), 1)

答案 6 :(得分:0)

如果您不想丢失精度,可以使用以下方法:

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

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

答案 7 :(得分:0)

这适用于正数和负数:

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