Avatar ·

Decimal vs Double en C#: qué tipo de datos elegir y cuándo usar?

¡Hola a todos! Soy nuevo en C# y al escribir una calculadora para una tienda en línea me encontré con el problema de elegir el tipo de datos para cálculos monetarios. Tengo un código simple: ```csharp double price = 19.99; double tax = 0.21; double total = price * (1 + tax); Console.WriteLine(total); // Muestra algo como 24.1879... en lugar de 24.1879 ``` Esperaba obtener exactamente 24.1879, pero a veces aparecen colas extrañas como 24.187899999999997. Esto no ocurre siempre, pero sí con suficiente frecuencia como para romper la lógica de comparación de precios. Busqué en Google y encontré que existe el tipo `decimal`, pero no entiendo la diferencia. Ambos almacenan números fraccionarios. Cuando reemplacé `double` por `decimal`: ```csharp decimal price = 19.99m; decimal tax = 0.21m; decimal total = price * (1 + tax); Console.WriteLine(total); // 24.1879 ``` Todo empezó a funcionar perfectamente. Pero he oído que `decimal` es más lento y usa más memoria. Preguntas: 1. ¿Cuál es la diferencia fundamental entre `double` y `decimal`? 2. ¿Cuándo se debe usar