Как разбить число по десятичной запятой в 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);
Попробуйте взорваться
list($int,$dec)=explode('.', $num);
поскольку вам действительно не нужно использовать разбиение на основе регулярных выражений. Расколоть не работал на вас как "." символу потребуется экранирование, чтобы обеспечить буквальное совпадение.
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
Если вы хотите, чтобы $dec был положительным, когда $num отрицательный (как и другие ответы), вы можете сделать:
$dec = abs($num - $int);
Не работает для отрицательных чисел, например если $ num = -17.3, то $ int = 18 и $ dec = 0.7
Если вы explode десятичное представление числа, вы потеряете точность. Если вы не против, пусть будет так (это нормально для текстового представления). Учитывайте регион! Мы, бельгийцы, используем запятую (по крайней мере, непрограммирующие :).
Если вы думаете о делать (например, для вычислений), вы можете использовать функцию floor:
$num = 15/4
$intpart = floor( $num ) // results in 3
$fraction = $num - $intpart // results in 0.75
Примечание: это для положительных чисел. Для отрицательных чисел вы можете изменить знак, использовать положительный подход и изменить знак части int.
Бразильцы также используют запятые для десятичных разделителей и точки для разделителей тысячных долей. Используйте us2.php.net/manual/en/function.localeconv.php, чтобы выяснить, какой разделитель подходит для вашей локали
Бельгийцы и бразильцы не такие уж разные :). Кто-то действительно должен написать для этого библиотеку.
$num = 15/4;
substr(strrchr($num, "."), 1)
Пожалуйста, объясните свой ответ немного подробнее.
$num = 3.75;
$fraction = $num - (int) $num;
В случае, если вы не хотите терять точность, вы можете использовать их:
$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
Обратите внимание, что таким образом вы теряете точность делать - не основывайте на этом вычисления.