php получает значения после десятичной дроби

#php #floating-point #rounding

#php #с плавающей запятой #округление

Вопрос:

Если у меня есть значение в переменной, например, 10.2333, и мне нужно использовать 23 из .2333, как мне это сделать? Для получения дополнительной информации я рассчитываю разницу во времени:

 $started = $_SESSION['now'];
$ended = time();
$time1 = $ended - $started;
$time2 = $time1 / 60;
  

$ time2 дает мне, например, 10.233

Комментарии:

1. Вам нужно округлить оставшиеся места или просто обрезать их?

Ответ №1:

Это должно дать вам то, что вы хотите.

 $time3 = (int)($time2 * 100) % 100;
  

Редактировать: Вопрос оказался другим. Чтобы получить минуты и секунды временной метки unix, вы должны сделать следующее.

 $minutes = ($time1 / 60) % 60;
$seconds = $time1 % 60;
  

Комментарии:

1. Я пробовал это, не совсем работает, например: $ started = 1321018907; $ ended = 1321020026; $ time1 = $ ended — $ started; $ time2 = $ time1 / 60; $ time3 = (int) ($ time2 * 100) % 100; дает мне: 19 минут и 64 секунды, значение secons неверно.

2. возможно, вы неправильно задали вопрос. этот код выдает вам первые две цифры дробной части. если вы хотите получить секунды временной метки unix, вам следует попробовать $ minutes = ($ time1 / 60) % 60 и $ seconds = $ time1 % 60

Ответ №2:

 <?php
   list($before_dot, $after_dot) = explode('.', $time2);
   $result = substr($after_dot, 0, 2);
?>
  

Ответ №3:

Что-то вроде этого может сработать:

 round(($time2 - (int)$time2) , 2);