Arredondar valores decimais é um aspecto crucial de muitas aplicações C#, especialmente quando se trata de cálculos financeiros ou apresentação de dados aos usuários. Este artigo explora os dois métodos principais para alcançar isso: decimal.Round()
e Math.Round()
, destacando suas diferenças e guiando você na seleção da abordagem ideal para suas necessidades específicas.
Sumário
- Arredondando Decimais com
decimal.Round()
- Arredondando Decimais com
Math.Round()
- Escolhendo o Método de Arredondamento Correto
Arredondando Decimais com decimal.Round()
O método decimal.Round()
é especificamente projetado para arredondar valores decimais e oferece controle superior sobre o processo de arredondamento. Um recurso chave é sua capacidade de especificar a estratégia MidpointRounding
, que dita como os valores exatamente no meio de dois valores arredondados potenciais são tratados. Duas estratégias comuns são:
MidpointRounding.AwayFromZero
(Padrão): Arredonda o valor do ponto médio para longe de zero. Por exemplo, 2.5 arredonda para 3, e -2.5 arredonda para -3.MidpointRounding.ToEven
: Arredonda o valor do ponto médio para o número par mais próximo. Por exemplo, 2.5 arredonda para 2, e 3.5 arredonda para 4. Esta abordagem é frequentemente preferida na análise estatística para minimizar o viés.
Aqui está como usar decimal.Round()
:
using System;
public class DecimalRoundingExample
{
public static void Main(string[] args)
{
decimal value1 = 2.555m;
decimal value2 = 2.5m;
decimal value3 = -2.5m;
// Away from zero (padrão)
Console.WriteLine($"{value1} arredondado: {decimal.Round(value1, 2)}");
Console.WriteLine($"{value2} arredondado: {decimal.Round(value2, 2)}");
Console.WriteLine($"{value3} arredondado: {decimal.Round(value3, 2)}");
// To even
Console.WriteLine($"n{value1} arredondado (ToEven): {decimal.Round(value1, 2, MidpointRounding.ToEven)}");
Console.WriteLine($"{value2} arredondado (ToEven): {decimal.Round(value2, 2, MidpointRounding.ToEven)}");
Console.WriteLine($"{value3} arredondado (ToEven): {decimal.Round(value3, 2, MidpointRounding.ToEven)}");
}
}
Arredondando Decimais com Math.Round()
O método Math.Round()
fornece uma abordagem mais simples para arredondamento, mas com menos controle. Ele usa MidpointRounding.AwayFromZero
como padrão. Embora você possa especificar MidpointRounding.ToEven
, decimal.Round()
é geralmente recomendado por sua clareza e precisão, particularmente em aplicações financeiras.
using System;
public class MathRoundingExample
{
public static void Main(string[] args)
{
decimal value1 = 2.555m;
// Away from zero (padrão)
Console.WriteLine($"{value1} arredondado: {Math.Round(value1, 2)}");
// To even (explicitamente especificado)
Console.WriteLine($"n{value1} arredondado (ToEven): {Math.Round(value1, 2, MidpointRounding.ToEven)}");
}
}
Escolhendo o Método de Arredondamento Correto
Para aplicações que exigem arredondamento preciso, especialmente cálculos financeiros, decimal.Round()
com especificação explícita de MidpointRounding
é a escolha preferida. Para cenários menos críticos onde o comportamento de arredondamento padrão é suficiente, Math.Round()
oferece uma solução mais concisa.