У меня есть алгоритм, который выполняет следующие вычисления:
Так что это может использоваться в остальной части расчета как:
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
Пожалуйста, помогите. Большое спасибо.
ОБНОВЛЕНИЕ - РЕШЕНО Хорошо, теперь это работает благодаря 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. '
';
}