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.