如何在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。
提前致谢。
答案 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