Article image
Leonardo Costa
Leonardo Costa23/02/2024 17:26
Compartilhe

A função Math.Round em C#

  • #C#

O arredondamento de números é uma operação matemática comum que consiste em aproximar um valor para o inteiro mais próximo ou para um número específico de casas decimais. Em C#, a linguagem de programação orientada a objetos da Microsoft, existe uma classe chamada Math que fornece vários métodos estáticos para realizar operações matemáticas, incluindo o arredondamento. Um desses métodos é o Math.Round, que recebe um valor decimal ou de ponto flutuante de precisão dupla e retorna um valor arredondado de acordo com uma convenção de arredondamento especificada

 

A documentação oficial da Microsoft Learn explica em detalhes a sintaxe, os parâmetros, os valores de retorno e os exemplos de uso da função Math.Round. A função Math.Round possui oito sobrecargas, ou seja, versões diferentes que aceitam diferentes tipos e quantidades de parâmetros. A sintaxe geral da função Math.Round é:

Math.Round(valor, dígitos, modo);

 

Onde:

  • valor é o único parâmetro obrigatório e é um valor decimal ou de ponto flutuante de precisão dupla que será arredondado.
  • dígitos é um parâmetro opcional que indica o número de casas decimais que o valor arredondado terá. Se omitido, o valor será arredondado para o inteiro mais próximo.
  • modo é um parâmetro opcional que indica a convenção de arredondamento que será usada. Se omitido, o valor será arredondado para o número par mais próximo se estiver exatamente no meio de dois números possíveis. As convenções de arredondamento disponíveis são: MidpointRounding.AwayFromZero, que arredonda o valor para longe de zero se estiver no meio; MidpointRounding.ToEven, que arredonda o valor para o número par mais próximo se estiver no meio; MidpointRounding.ToNegativeInfinity, que arredonda o valor para o menor número possível se estiver no meio; e MidpointRounding.ToPositiveInfinity, que arredonda o valor para o maior número possível se estiver no meio.

Explicação sobre o funcionamento da função

A função Math.Round funciona de forma diferente dependendo dos parâmetros que são passados. A seguir, são apresentados alguns casos possíveis:

  • Se apenas o parâmetro valor for passado, a função Math.Round arredonda o valor para o inteiro mais próximo, usando a convenção de arredondamento para o número par mais próximo. Por exemplo:
Math.Round(3.4); // retorna 3
Math.Round(3.5); // retorna 4
Math.Round(3.6); // retorna 4
Math.Round(-3.4); // retorna -3
Math.Round(-3.5); // retorna -4
Math.Round(-3.6); // retorna -4


  • Se o parâmetro valor e o parâmetro dígitos forem passados, a função Math.Round arredonda o valor para o número especificado de casas decimais, usando a convenção de arredondamento para o número par mais próximo. Por exemplo:
Math.Round(3.14159, 2); // retorna 3.14
Math.Round(3.145, 2); // retorna 3.14
Math.Round(3.15, 1); // retorna 3.2
Math.Round(-3.14159, 2); // retorna -3.14
Math.Round(-3.145, 2); // retorna -3.14
Math.Round(-3.15, 1); // retorna -3.2
  • Se o parâmetro valor e o parâmetro modo forem passados, a função Math.Round arredonda o valor para o inteiro mais próximo, usando a convenção de arredondamento especificada. Por exemplo:
Math.Round(3.5, MidpointRounding.AwayFromZero); // retorna 4
Math.Round(3.5, MidpointRounding.ToEven); // retorna 4
Math.Round(3.5, MidpointRounding.ToNegativeInfinity); // retorna 3
Math.Round(3.5, MidpointRounding.ToPositiveInfinity); // retorna 4
Math.Round(-3.5, MidpointRounding.AwayFromZero); // retorna -4
Math.Round(-3.5, MidpointRounding.ToEven); // retorna -4
Math.Round(-3.5, MidpointRounding.ToNegativeInfinity); // retorna -4
Math.Round(-3.5, MidpointRounding.ToPositiveInfinity); // retorna -3
  • Se o parâmetro valor, o parâmetro dígitos e o parâmetro modo forem passados, a função Math.Round arredonda o valor para o número especificado de casas decimais, usando a convenção de arredondamento especificada. Por exemplo:
Math.Round(3.145, 2, MidpointRounding.AwayFromZero); // retorna 3.15
Math.Round(3.145, 2, MidpointRounding.ToEven); // retorna 3.14
Math.Round(3.145, 2, MidpointRounding.ToNegativeInfinity); // retorna 3.14
Math.Round(3.145, 2, MidpointRounding.ToPositiveInfinity); // retorna 3.15
Math.Round(-3.145, 2, MidpointRounding.AwayFromZero); // retorna -3.15
Math.Round(-3.145, 2, MidpointRounding.ToEven); // retorna -3.14
Math.Round(-3.145, 2, MidpointRounding.ToNegativeInfinity); // retorna -3.15
Math.Round(-3.145, 2, MidpointRounding.ToPositiveInfinity); // retorna -3.14

Exemplos práticos

A função Math.Round pode ser usada em diversas situações que envolvem o arredondamento de números, como por exemplo:

  • Calcular a média aritmética de um conjunto de notas de alunos, arredondando o resultado para duas casas decimais. Por exemplo:
double[] notas = {8.7, 9.3, 7.5, 6.4, 10.0}; // um array de notas
double soma = 0; // uma variável para armazenar a soma das notas
foreach (double nota in notas) // um laço para percorrer o array
{
  soma += nota; // somar cada nota à variável soma
}
double media = soma / notas.Length; // calcular a média dividindo a soma pelo número de notas
media = Math.Round(media, 2); // arredondar a média para duas casas decimais
Console.WriteLine("A média das notas é: " + media); // exibir o resultado
// A saída será: A média das notas é: 8.38
  • Converter uma temperatura em graus Celsius para graus Fahrenheit, arredondando o resultado para o inteiro mais próximo. Por exemplo:
double celsius = 25; // uma variável para armazenar a temperatura em graus Celsius
double fahrenheit = celsius * 1.8 + 32; // uma variável para armazenar a temperatura em graus Fahrenheit
fahrenheit = Math.Round(fahrenheit); // arredondar a temperatura para o inteiro mais próximo
Console.WriteLine(celsius + " graus Celsius equivalem a " + fahrenheit + " graus Fahrenheit"); // exibir o resultado
// A saída

Observações:

  • A função Math.Round() pode ser usada com diferentes tipos de dados de ponto flutuante, como double, float e decimal.
  • O método também possui sobrecargas que permitem especificar um modo de arredondamento personalizado.
  • É importante consultar a documentação oficial para obter mais informações sobre os diferentes modos de arredondamento disponíveis.


Considerações Finais

A função Math.Round() é uma ferramenta versátil para manipular números de ponto flutuante em C#. Ao compreender seu funcionamento e as diferentes opções de uso, você pode utilizá-la para atender às necessidades específicas do seu projeto.

documentação oficial: https://learn.microsoft.com/pt-br/dotnet/api/system.math.round?view=net-8.0

Compartilhe
Comentários (1)

LJ

Luiz Junior - 23/02/2024 20:40

Ótimo