Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中按小数点拆分数字_Php_Split - Fatal编程技术网

在php中按小数点拆分数字

在php中按小数点拆分数字,php,split,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 提前谢谢。试试看 $num = 15/4; // or $num = 3.75; list($int, $dec) = explode('.', $num); 因为

在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

提前谢谢。

试试看

$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
因为您实际上不需要使用基于正则表达式的拆分。作为“.”字符不适用于您,需要转义以提供文字匹配

$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
$num
为负值时(与其他答案一样),如果希望
$dec
为正值,可以执行以下操作:

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

如果分解该数字的十进制表示形式,则会丢失精度。如果你不介意的话,那就随它去吧(这对于文本表示没关系)。考虑区域设置!我们比利时人使用逗号(至少非编程的:)

如果您不介意(例如用于计算),您可以使用
floor
功能:

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

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

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

$num = 15/4;
substr(strrchr($num, "."), 1)
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);

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

这适用于正数和负数:

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

负数计算失败,例如,如果$num=-17.3,那么$int=18和$dec=0.7请注意,这样做确实会降低精度-不要以此为基础进行计算。巴西人还使用逗号表示十进制分隔符,句点表示千分之一分隔符。用于确定您所在地区的正确分隔符是什么。爱尔兰人和巴西人没有太大区别:)。有人真的应该为此编写一个库。请对你的答案多解释一些。
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);

// you will get $whole = 10, $fraction = 10
$num = 5.7;
$whole = (int) $num;         //  5
$frac  = $num - (int) $num;  // .7