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
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
CI/CD para proyectos C++: configuración de GitHub Actions