Разделить число на десятичную точку в php - PullRequest
5 голосов
/ 05 января 2009

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

Заранее спасибо.

Ответы [ 8 ]

20 голосов
/ 05 января 2009

Если вы explode десятичное представление числа, вы теряете точность. Если вы не возражаете, пусть будет так (это нормально для текстового представления). Примите во внимание локаль! Мы, бельгийцы, используем запятую (по крайней мере непрограммирующую :).

Если вы делаете мысли (например, для вычислений), вы можете использовать функцию floor:

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

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

7 голосов
/ 05 января 2009

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

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

, поскольку вам не нужно использовать разделение на основе регулярных выражений. Split не работал для вас как «.» персонажу нужно убежать, чтобы обеспечить буквальное совпадение.

6 голосов
/ 05 января 2009
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
4 голосов
/ 05 января 2009
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;

Если вы хотите, чтобы $dec было положительным, когда $num отрицательно (как и другие ответы), вы можете сделать:

$dec = abs($num - $int);
2 голосов
/ 03 мая 2013
$num = 3.75;
$fraction = $num - (int) $num;
1 голос
/ 04 апреля 2012
$num = 15/4;
substr(strrchr($num, "."), 1)
0 голосов
/ 06 февраля 2016

Это работает для положительных и отрицательных чисел:

$num = 5.7;
$whole = (int) $num;         //  5
$frac  = $num - (int) $num;  // .7
0 голосов
/ 25 сентября 2014

В случае, если вы не хотите терять точность, вы можете использовать это:

$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);

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