double[] doacoes = {103.54, 259.72, 82.16, 154.87, 364.45, 14.49 };
double total = doacoes.Sum();
Console.WriteLine($"Total de doações: {total}");
double[] doacoes = {103.54, 259.72, 82.16, 154.87, 364.45, 14.49 };
double total = doacoes.Sum();
Console.WriteLine($"Total de doações: {total}");
Olá, Eduardo. Como vai?
Excelente código! Sua resolução está totalmente correta e demonstra que você já está muito familiarizado com o uso do LINQ em C#.
O uso do método de extensão .Sum() é, sem dúvidas, a forma mais limpa, moderna e elegante de consolidar a soma de elementos numéricos em uma coleção. Você substituiu perfeitamente o que antigamente exigiria a criação de uma variável acumuladora e um laço foreach manual por uma única linha de código altamente legível.
Para enriquecer ainda mais o seu projeto e expandir os seus conhecimentos sobre a manipulação de dados financeiros e de ponto flutuante em C#, separei duas dicas técnicas fundamentais:
Como o seu array representa valores de doações, uma excelente prática de mercado ao exibir esses dados para o usuário final no console é aplicar a formatação de moeda local.
No C#, você pode fazer isso de forma muito simples dentro da própria interpolação de strings, adicionando o especificador de formato :C logo após o nome da variável:
// O ":C" formata o número automaticamente com o símbolo da moeda do sistema (ex: R$ 979,23)
Console.WriteLine($"Total de doações: {total:C}");
decimalNo seu exercício, você utilizou o tipo double, o que funciona perfeitamente para a atividade. Contudo, fica aqui uma dica de ouro para a sua carreira como desenvolvedor: em sistemas reais que lidam com dinheiro, transações bancárias, doações ou faturamento, o tipo double (e o float) deve ser evitado.
Os tipos double e float utilizam uma lógica de representação binária de ponto flutuante que pode gerar pequenas distorções de arredondamento em cálculos matemáticos complexos (aqueles famosos casos onde a soma resulta em algo como 979.230000000002).
Para valores monetários, o C# possui um tipo nativo ultrapreciso chamado decimal. Veja como o seu código ficaria utilizando essa boa prática de mercado:
// Note o sufixo 'M' em cada número para indicar que são do tipo decimal
decimal[] doacoes = { 103.54M, 259.72M, 82.16M, 154.87M, 364.45M, 14.49M };
decimal total = doacoes.Sum();
Console.WriteLine($"Total de doações: {total:C}");
Parabéns por mais essa entrega cirúrgica! A sua consistência nos desafios de coleções está excelente.
Espero que possa ter lhe ajudado!