Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida sobre o Average

bandasRegistradas.Add("Linkin Park", new List<int> { 10, 8, 6 });

Foi adicionado a nota 5 e depois pedido a media

void exibirMedia()
{
    Console.Clear();
    exibirTituloDaOpcao("Exibir Media das Bandas");
    Console.Write("Digite o nome da Banda que deseja Avaliar: ");
    string nomeDaBanda = Console.ReadLine()!;
    //Verifica se a banda está no dicionario
    if (bandasRegistradas.ContainsKey(nomeDaBanda))
    {   //Se sim ,atribui o valor a lista notasDaBanda e imprime a media
       ** List<int> notasDaBanda = bandasRegistradas[nomeDaBanda];**
        Console.WriteLine($"\nA média da banda {nomeDaBanda} é {notasDaBanda.Average()}.");//Average()Caucula a media
        Console.WriteLine("Digite uma tecla para voltar ao menu principal.");
        Console.ReadKey();
        Console.Clear();
        ExibirOpcoesDoMenu();
    }
    else
    {
        Console.WriteLine($"\nA {nomeDaBanda} não foi encontrada");
        Console.WriteLine($"Digite uma tecla para voltar ao menu principal");
        Console.ReadKey();
        Console.Clear();
        ExibirOpcoesDoMenu();
    }
}
ExibirOpcoesDoMenu();

O resultado foi 7,25

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
A lista está em inteiro, então porque saiu fracionado o resultado mesmo sendo media não deveria arrendonar?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas
solução!

Oi Ivan,

Mesmo que sua lista (List) contenha números inteiros, o método .Average() do C# retorna um número do tipo double, justamente para permitir resultados com casas decimais.

Exemplo prático:

List notas = new List { 10, 8, 6, 5 };
Console.WriteLine(notas.Average());

O resultado será 7,25, porque a média aritmética de (10 + 8 + 6 + 5) ÷ 4 = 29 ÷ 4 = 7,25.

Isso é intencional, se o método arredondasse automaticamente, você perderia precisão.

Se quiser mostrar a média arredondada, você pode fazer de algumas formas:

Arredondar com duas casas decimais
Console.WriteLine($"A média é {notas.Average():F2}");

Mostra 7,25.
Arredondar para o número inteiro mais próximo
Console.WriteLine($"A média é {Math.Round(notas.Average())}");

Mostra 7.
Truncar (cortar as casas decimais)
Console.WriteLine($"A média é {(int)notas.Average()}");

Mostra 7, sem arredondar, apenas cortando o .25.

Resumindo:
.Average() sempre retorna double
Por isso aparece o resultado fracionado (7,25)
Se quiser arredondar ou limitar casas decimais, precisa formatar manualmente.

Obrigado