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; eMidpointRounding.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âmetrodí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âmetromodo
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âmetrodígitos
e o parâmetromodo
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