В PHP нет функции усечения — параметры?

У меня есть алгоритм, который выполняет следующие вычисления:

  1. ( ( 0,50 * 0 ) + 7 ) / 10 = 0,70
  2. ( ( 0,70 * 10 ) + 9 ) / 20 = 0,80
  3. ( ( 0,80 * 20 ) + 7 ) / 30 = 0,7666666667 -> Я хочу, чтобы это значение было усечено до 0,76

Так что это может использоваться в остальной части расчета как:

4a. ( ( 0,76* 30 ) + 8 ) / 40 = 0,77

И недля подачи при округлении до двух знаков после запятой как 0,77:

4б. ( ( 0,77* 30 ) + 8 ) / 40 = 0,77

****Следующее, кажется, не удалось и вместо этого округлить до 0,77:****

PHP Функция sptrinf(): PHP отбрасывает десятичные дроби без округления

PHP-функция number_format(): PHP: показывает число до 2 знаков после запятой

PHP-функция floor(): Truncate числа с плавающей запятой с PHP

  • Есть ли другой способ?
  • Возможно ли добиться того, что я хочу (усечение до двух знаков после запятой) с помощью PHP?

Пожалуйста, помогите. Большое спасибо.

ОБНОВЛЕНИЕ - РЕШЕНО Хорошо, теперь это работает благодаря dkamins и zneak. Я использовал подход floor() (я предполагаю, что в прошлом я что-то делал неправильно). Однако теперь происходит следующее:

e.g.

(0,86 * 30) + 9 ) / 40 = 0,87 (должно), но после TRUNC это = 0,86

Как усекается 0,87 до 0,86? Это не имеет никакого смысла.Есть ли способ заставить его усекаться, только если есть более 2 знаков после запятой?

РЕШЕНО:

$numDecPlace = strlen(substr(strrchr($newRel, "."), 1));
echo '

Test: Number of decimal places=' .$numDecPlace. '

'; if($numDecPlace > 2) { $newRel = floor($newRel * 100) / 100; // Truncate to 2dp. echo '

Test: New relationship truncated is $newRel=' .$newRel. '

'; }

5
задан Community 23 May 2017 в 10:34
поделиться