Подтвердить что ты не робот

Как округлить десятичное значение до ближайшего значения 0,05?

Есть ли способ округлить десятичное значение до его ближайшего значения 0,05 в .Net?

Пример:

7.125 → 7.15

6.66 → 6.7

Если его теперь доступно, кто-нибудь может предоставить мне algo?

4b9b3361

Ответ 1

Как насчет:

Math.Ceiling(myValue * 20) / 20

Ответ 2

Используйте это:

Math.Round(mydecimal / 0.05m, 0) * 0.05m;

Та же логика может использоваться в T-SQL:

ROUND(@mydecimal / 0.05, 0) * 0.05

Я предпочитаю этот подход к выбранному ответу просто потому, что вы можете прямо видеть используемую точность.

Ответ 3

Что-то вроде этого должно работать на любой шаг, а не только на 0,05:

private decimal RoundUp (decimal value, decimal step)
{
    var multiplicand = Math.Ceiling (value / step);
    return step * multiplicand;
}

Ответ 4

Math..::. Round Method (Decimal, Int32, MidpointRounding)

Устанавливает значение с плавающей запятой с двойной точностью в указанное количество дробных цифр. Параметр указывает, как округлить значение, если оно находится на полпути между двумя другими номерами.

   Math.Round(1.489,2,MidpointRounding.AwayFromZero)

Ответ 5

Дублированный здесь и здесь для ruby ​​и python. Это не должно быть слишком разным.