У меня есть этот код
<?php echo round(0.572,2,PHP_ROUND_HALF_UP);?>
Я хочу округлить два десятичных знака до половины, я ожидаю, что значение равно 0,58 … но вышеприведенный код печати 0.57
Как я могу это сделать?
если вы ожидаете 0,58, вам не нужно использовать «половину раунда», но функция «Потолок»
$v = 0.575; echo ceil($v * 100) / 100; // show 0,58
Значение 0.572
не может быть округлено до 0.58
, потому что третье число в 2
, меньше половины (или 5
). Если вы делаете round(0.575, 2, PHP_ROUND_HALF_UP)
вы получите 0.58
. В этом случае 0.57
является правильным округленным значением.
Если вы хотите всегда округлить до третьего десятичного знака, независимо от его значения, вы можете использовать ciel()
вместо этого, но для этого требуется небольшая дополнительная математика. Простая функция для демонстрации округления всегда была бы …
function forceRoundUp($value, $decimals) { $ord = pow(10, $decimals); return ceil($value * $ord) / $ord; } echo forceRoundUp(0.572, 2); // 0.58 echo forceRoundUp(0.57321, 4); // 0.5733
function round_up($value, $places) { $mult = pow(10, abs($places)); return $places < 0 ? ceil($value / $mult) * $mult : ceil($value * $mult) / $mult; } echo round_up(0.572,2);
Надеюсь, это сработает для вас!