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