Есть ли способ округлить десятичное значение до ближайшего значения 0,05 в .Net?
Пример:
7,125 -> 7,15
6,66 -> 6,7
Если он уже доступен, может ли кто-нибудь предоставить мне алгоритм?
Как насчет:
Math.Ceiling(myValue * 20) / 20
Используйте это:
Math.Round(mydecimal / 0.05m, 0) * 0.05m;
Та же логика может использоваться в T-SQL:
ROUND(@mydecimal / 0.05, 0) * 0.05
Я предпочитаю этот подход для выбранного ответа просто потому, что вы можете непосредственно видеть используемую точность.
Нечто подобное должно работать для любого шага, а не только для 0,05:
private decimal RoundUp (decimal value, decimal step) { var multiplicand = Math.Ceiling (value / step); return step * multiplicand; }
Math .. ::. Round метод (десятичный, Int32, MidpointRounding)
Округляет значение с плавающей запятой двойной точности до указанного числа дробных цифр. Параметр указывает, как округлить значение, если оно находится посередине между двумя другими числами.
Math.Round(1.489,2,MidpointRounding.AwayFromZero)
Дублировано здесь и здесь для ruby и python. Это не должно быть слишком по-другому.