Округлить до следующего большего числа

Я хочу округлить значение (двойное) до следующего (всегда округляется вверх) числа. Округление может быть задано любым числом.

Exp.:
. Округлить до ближайших 2.50

0.00       --> 0.00
0.01       --> 2.50
2.49       --> 2.50
2.50       --> 2.50
2.50000001 --> 5.00
...

Алгоритм для этого прост (если "число" было отрицательным * -1):

Math.Round((Math.Abs(number) + tolerance) / 2.50, MidpointRounding.AwayFromZero) * 2.50

Допуск определяется так:

tolerance = 2.50 / 2 - Math.Pos(10, -x);

Но я не знаю, как определить x! Потому что в случае 1-4-го примеров x должно быть 0.01, в случае 5-го - 0.0000001 и так далее...

Результаты поиска предлагают только разобрать строку десятичного числа и посчитать десятичную цифру. Неужели нет математического способа? Иначе мне придется иметь дело с разными настройками локали для десятичного сеператора и чисел без десятичных цифр (нет десятичного сеператора для удаления).

Может у кого-нибудь есть решение моей проблемы. Спасибо!

С уважением, Дэнни

7
задан dannyyy 13 October 2011 в 12:47
поделиться