23

I've done a search on C# rounding, but haven't been able to find the answer to my current problem.

What I want to do is always round down to the nearest 50. All the values I want to round down will be in decimal.

So 635.25 would be 600.

298.42 would be 250.

149.56 would be 100.

I've looked at math.round but how would I use that so it always rounds down to the nearest 50 and never up?

saintsfanuk
  • 332
  • 1
  • 5
  • 19

3 Answers3

47

Divide the value by 50, round down to the closest whole number, and multiply by 50 again:

double n = Math.Floor(n / 50.0) * 50.0;
Guffa
  • 687,336
  • 108
  • 737
  • 1,005
5

Another way to Guffa's:

(((int) value) / 50) * 50
leppie
  • 115,091
  • 17
  • 196
  • 297
4

Using modulus:

var roundedDownToClosestFifty = value - (value % 50);
Repo
  • 1,736
  • 1
  • 10
  • 6