Разделить число на десятичную точку в php

Как разбить число на десятичную точку в 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 

Примечание: это для положительных чисел. Для отрицательных чисел вы можете инвертировать знак, использовать положительный подход и переустанавливать знак внутренней части.

Попробуйте взорваться

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

так как вам действительно не нужно использовать разделение на основе регулярного выражения. Сплит не работал на вас, как на ". персонажу потребуется экранирование, чтобы обеспечить буквальное совпадение.

 $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) 

Если вы не хотите потерять точность, вы можете использовать следующие:

 $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