Avatar ·

Decimal vs Double em C#: qual tipo de dados escolher e quando usar?

Olá a todos! Sou iniciante em C# e, ao escrever uma calculadora para uma loja online, me deparei com o problema de escolher o tipo de dados para cálculos monetários. Tenho um código simples: ```csharp double price = 19.99; double tax = 0.21; double total = price * (1 + tax); Console.WriteLine(total); // Exibe algo como 24.1879... em vez de 24.1879 ``` Eu esperava obter exatamente 24.1879, mas às vezes aparecem caudas estranhas como 24.187899999999997. Isso não acontece sempre, mas com frequência suficiente para quebrar a lógica de comparação de preços. Pesquisei no Google e descobri que existe o tipo `decimal`, mas não entendo a diferença. Parece que ambos armazenam números fracionários. Quando substituí `double` por `decimal`: ```csharp decimal price = 19.99m; decimal tax = 0.21m; decimal total = price * (1 + tax); Console.WriteLine(total); // 24.1879 ```