Avatar ·

Conversion de Decimal en Double en C# : comment éviter la perte de précision ?

Bonjour à tous ! Je suis débutant en C# et j'ai rencontré un problème lors du travail avec des calculs financiers. J'ai une variable de type `decimal` qui stocke un montant avec une précision jusqu'aux centimes (par exemple, 123.45m). Je dois passer cette valeur à une méthode qui accepte un paramètre de type `double`. J'ai essayé une simple conversion explicite : `(double)myDecimal`, et le code s'est compilé. Mais lorsque j'ai affiché le résultat, j'ai remarqué que le nombre changeait parfois. Par exemple, `123.45m` est devenu `123.44999999999999`. Cela provoque des erreurs dans les calculs. Voici un exemple de mon code : ```csharp decimal price = 123.45m; double convertedPrice = (double)price; Console.WriteLine(convertedPrice); // Affiche 123.44999999999999 ``` Pourquoi cela se produit-il ? Je pensais que `double` pouvait stocker de grands nombres, mais pourquoi la précision est-elle perdue ? Existe-t-il un moyen de convertir `decimal` en `double` sans perte de décimales ? Ou dois-je toujours utiliser uniquement `decimal` pour l'argent ? Je vous remercie d'avance pour vos explications et exemples de code.