How to round to nearest Thousand?

Solution 1:

PHP allows negative precision for round such as with:

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

Whereas a positive precision indicates where to round after the decimal point, negative precisions provide the same power before the decimal point. So:

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

As a general solution, even for languages that don't have it built in, you simply do something like:

  • add 500.
  • divide it by 1000 (and truncate to integer if necessary).
  • multiply by 1000.

This is, of course, assuming you want the PHP_ROUND_HALF_UP behaviour. There are some who think that bankers rounding, PHP_ROUND_HALF_EVEN, is better for reducing cumulative errors but that's a topic for a different question.

Solution 2:

rounded_number = round(original_number, -3);

http://php.net/manual/en/function.round.php

Solution 3:

Here's an answer to round up to the next thousand:

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

500-999 then round to 0 and 1000-1999 round to 1000, etc.

If you want it to start at 1000, then just do

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

Cheers!

Solution 4:

Use the round function as mentioned by other posters round($number, -3).

You can also, divide your number by 1,000, round to nearest whole number then multiply by 1,000.

Also, if you want to round up, you can divide by 1,000, negate the quotient, coerce it to an integer, negate it again and then multiply it by 1,000.

Solution 5:

Just a small change, may help to round up!

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