C# Programming

Dominando o Arredondamento Decimal em C#

Spread the love

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()

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *