Я хочу округлить значение (двойное) до следующего (всегда округляется вверх) числа. Округление может быть задано любым числом.
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 и так далее...
Результаты поиска предлагают только разобрать строку десятичного числа и посчитать десятичную цифру. Неужели нет математического способа? Иначе мне придется иметь дело с разными настройками локали для десятичного сеператора и чисел без десятичных цифр (нет десятичного сеператора для удаления).
Может у кого-нибудь есть решение моей проблемы. Спасибо!
С уважением, Дэнни