Avatar ·

Conversão de Decimal para Double em C#: como evitar perda de precisão?

Olá a todos! Sou novo em C# e encontrei um problema ao trabalhar com cálculos financeiros. Tenho uma variável do tipo `decimal`, que armazena um valor com precisão de centavos (por exemplo, 123.45m). Preciso passar esse valor para um método que aceita um parâmetro do tipo `double`. Tentei uma conversão explícita simples: `(double)myDecimal`, e o código compilou. Mas quando exibi o resultado, notei que o número às vezes mudava. Por exemplo, `123.45m` se transformou em `123.44999999999999`. Isso causa erros nos cálculos. Aqui está um exemplo do meu código: ```csharp decimal price = 123.45m; double convertedPrice = (double)price; Console.WriteLine(convertedPrice); // Exibe 123.44999999999999 ``` Por que isso acontece? Eu pensei que `double` pudesse armazenar números grandes, mas por que a precisão é perdida? Existe uma maneira de converter `decimal` para `double` sem perder as casas decimais? Ou devo sempre usar apenas `decimal` para dinheiro? Agradeço por explicações e exemplos de código.