1
resposta

[Projeto] Somando os valores do array

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}");
1 resposta

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:


1. Formatação de Moeda Comercial

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}");

2. O Tipo de Dado Ideal para Finanças: decimal

No 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!