Всегда округлять значение в 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;
}