Avatar ·

Conversión de Decimal a Double en C#: ¿cómo evitar la pérdida de precisión?

¡Hola a todos! Soy nuevo en C# y me encontré con un problema al trabajar con cálculos financieros. Tengo una variable de tipo `decimal` que almacena un monto con precisión de centavos (por ejemplo, 123.45m). Necesito pasar este valor a un método que acepta un parámetro de tipo `double`. Intenté una conversión explícita simple: `(double)myDecimal`, y el código compiló. Pero cuando mostré el resultado, noté que el número a veces cambia. Por ejemplo, `123.45m` se convirtió en `123.44999999999999`. Esto causa errores en los cálculos. Aquí hay un ejemplo de mi código: ```csharp decimal price = 123.45m; double convertedPrice = (double)price; Console.WriteLine(convertedPrice); // Muestra 123.44999999999999 ``` ¿Por qué sucede esto? Pensé que `double` podía almacenar números grandes, pero ¿por qué se pierde precisión? ¿Hay alguna forma de convertir `decimal` a `double` sin perder decimales? ¿O debería usar siempre solo `decimal` para dinero? Agradeceré una explicación y ejemplos de código.