Всегда округлять значение в C#

Я хочу округлить значение в соответствии с третьим десятичным знаком. Он всегда должен принимать значение UP и округлять. Я использовал Math.Round, но он не дает результата, как я ожидал.

Сценарий 1

var value1 = 2.526;
var result1 = Math.Round(value1, 2); //Expected: 2.53 //Actual: 2.53

Сценарий 2

var value2 = 2.524;
var result2 = Math.Round(value2, 2); //Expected: 2.53 //Actual: 2.52

Сценарий 1 в порядке. Это дает результат, как я и ожидал. Во втором сценарии у меня сумма 2,522. Я хочу рассмотреть 3-ю десятичную точку (в данном случае это "4"), и она должна округляться. Ожидаемый результат - 2,53.

Независимо от того, что такое третье десятичное число (меньше 5 или больше 5), оно всегда должно округляться.

Кто-нибудь может дать мне решение? Я не думаю, что Math.Round помогает мне здесь.

4 ответа

Решение
var value2 = 2.524;
var result2 = Math.Round(value2, 2); //Expected: 2.53 //Actual: 2.52
if(result2 < value2)
    result += 0.01; // actual 2.53

Как сказал Джон, используйте вместо него десятичную. Тогда вы можете сделать это, чтобы всегда округлять до 2 десятичных знаков.

Math.Ceiling(value2 * 100) / 100

Наконец-то я придумаю решение. Я улучшил ответ Синатра, как показано ниже,

var value = 2.524;
var result = RoundUpValue(value, 2); // Answer is 2.53

public double RoundUpValue(double value, int decimalpoint)
{
    var result = Math.Round(value, decimalpoint);
    if (result < value)
    {
        result += Math.Pow(10, -decimalpoint);
    }
    return result;
}

Как насчет этого:

Math.Round(Value+0.005,2)
Другие вопросы по тегам