Avatar ·

Decimal vs Double en C# : quel type de données choisir et quand l'utiliser ?

Bonjour à tous ! Je suis débutant en C# et en écrivant une calculatrice pour une boutique en ligne, j'ai rencontré un problème de choix de type de données pour les calculs monétaires. J'ai un code simple : ```csharp double price = 19.99; double tax = 0.21; double total = price * (1 + tax); Console.WriteLine(total); // Affiche quelque chose comme 24.1879... au lieu de 24.1879 ``` Je m'attendais à obtenir exactement 24.1879, mais parfois des queues étranges apparaissent, comme 24.187899999999997. Cela ne se produit pas toujours, mais assez souvent pour casser la logique de comparaison des prix. J'ai cherché sur Google et j'ai trouvé qu'il existe un type `decimal`, mais je ne comprends pas la différence. Apparemment, les deux stockent des nombres fractionnaires. Quand j'ai remplacé `double` par `decimal` : ```csharp decimal price = 19.99m; decimal tax = 0.21m; decimal total = price * (1 + tax); Console.WriteLine(total); // 24.1879 ``` Tout a commencé à fonctionner parfaitement. Mais j'ai entendu dire que `decimal` est plus lent et utilise plus de mémoire. Questions : 1. Quelle est la différence fondamentale entre `double` et `decimal` ? 2. Quand faut-il utiliser