【发布时间】:2009-01-05 11:40:23
【问题描述】:
如何在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 为空。
提前致谢。
【问题讨论】:
如何在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 为空。
提前致谢。
【问题讨论】:
如果您explode 数字的十进制表示,您将失去精度。如果您不介意,那就这样吧(对于文本表示来说没关系)。考虑语言环境!我们比利时人使用逗号(至少是非编程的:)。
如果您确实介意(例如用于计算),您可以使用floor 函数:
$num = 15/4
$intpart = floor( $num ) // results in 3
$fraction = $num - $intpart // results in 0.75
注意:这是针对正数的。对于负数,您可以反转符号,使用正方法,然后重新反转 int 部分的符号。
【讨论】:
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
【讨论】:
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
如果您希望 $dec 在 $num 为负数时为正数(与其他答案一样),您可以这样做:
$dec = abs($num - $int);
【讨论】:
$num = 3.75;
$fraction = $num - (int) $num;
【讨论】:
$num = 15/4;
substr(strrchr($num, "."), 1)
【讨论】:
这适用于正数和负数:
$num = 5.7;
$whole = (int) $num; // 5
$frac = $num - (int) $num; // .7
【讨论】:
如果您不想丢失精度,可以使用这些:
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);
// you will get $whole = 10, $fraction = 10
【讨论】: