Console.WriteLine(10 / 4) imprime 2: o desafio de C# em que mais gente falha
O que imprime isto?
Console.WriteLine(10 / 4);
Se disseste 2,5, não és o primeiro. Imprime 2.
Com dois int, o C# faz divisão inteira. O resultado também é int e a parte decimal desaparece. Não arredonda, corta em direção a zero.
Console.WriteLine(10 / 4); // 2
Console.WriteLine(-10 / 4); // -2 (e não -3)
Console.WriteLine(10 % 4); // 2 (o resto)
Quem decide é o tipo, não a conta. Basta um dos lados ter casas decimais:
Console.WriteLine(10 / 4.0); // 2.5
Console.WriteLine(10 / 4d); // 2.5
O sítio onde isto te apanha não é o 10 / 4 solto. É num cálculo normal, com variáveis, onde parece que está tudo certo:
int total = 10;
int pessoas = 4;
double media = total / pessoas; // 2, não 2.5
O double à esquerda não ajuda. A divisão acontece primeiro, com dois int, e só depois o 2 é convertido para 2.0. O compilador não se queixa e o resultado sai errado em silêncio.
A correção é converter antes de dividir:
double media = (double)total / pessoas; // 2.5
Se queres treinar este tipo de coisa, estou a construir a TOCA, uma app para aprender C# com lições de 5 minutos por dia. Está em https://learnwithtoca.com. Ainda é cedo e aceito feedback técnico, sobretudo se encontrares uma pergunta mal feita ou uma resposta discutível.
Fonte: https://learnwithtoca.com