Как округлить до ближайшей тысячи?

Как мне округлить число до ближайшей тысячи?

function round($var) {
    // Round it
}

Ответ 1

PHP допускает отрицательную точность для round, например:

$x = round ($x, -3); // Uses default mode of PHP_ROUND_HALF_UP.

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

n    round(1111.1111,n)
==   ==================
 3   1111.111
 2   1111.11
 1   1111.1
 0   1111
-1   1110
-2   1100
-3   1000

Как общее решение, даже для языков, на которых он не встроен, вы просто делаете что-то вроде:

  • добавить 500.
  • разделите его на 1000 (и при необходимости усечь на целое число).
  • умножить на 1000.

Это, конечно, предполагается, что вы хотите поведение PHP_ROUND_HALF_UP. Некоторые считают, что округление банкиров, PHP_ROUND_HALF_EVEN, лучше для уменьшения кумулятивных ошибок, но для темы для другого вопроса.

Ответ 3

Используйте круглую функцию, как упоминалось другими плакатами round($number, -3).

Вы также можете разделить свой номер на 1000, округлить до ближайшего целого числа, а затем умножить на 1000.

Кроме того, если вы хотите округлить, вы можете разделить на 1000, отрицать частное, принудить его к целому числу, снова отменить его, а затем умножить на 1,000.

Ответ 4

Используйте round

Ответ 5

Для натуральных чисел:

function round($var) {
    return ($var + 500) / 1000 * 1000;
}

Ответ 7

Просто для вашей информации простой расчет из Mikel answer быстрее round():

Test name       Repeats         Result          Performance     
calculation     10000           0.030229 sec    +0.00%
round           10000           0.040981 sec    -35.57%

Источник тестирования здесь.

Ответ 8

Просто небольшое изменение, может помочь округлить!

$x = ceil(220.20 / 1000) * 1000;
echo $x;

Ответ 9

Вот ответ, чтобы округлить до следующей тысячи:

abs(round(($a - 500), -3)) . "\n";

500-999, затем раунд до 0 и 1000-1999 раунд до 1000 и т.д.

Если вы хотите, чтобы он начинался с 1000, просто сделайте

abs(round(($a + 500), -3)) . "\n";

Ура!