Avatar ·

Decimal vs Double in C#: Welchen Datentyp wählen und wann verwenden?

Hallo zusammen! Ich bin neu in C# und bin beim Schreiben eines Taschenrechners für einen Online-Shop auf das Problem der Wahl des Datentyps für Geldberechnungen gestoßen. Ich habe einen einfachen Code: ```csharp double price = 19.99; double tax = 0.21; double total = price * (1 + tax); Console.WriteLine(total); // Gibt so etwas wie 24.1879... statt 24.1879 aus ``` Ich erwartete genau 24.1879 zu erhalten, aber manchmal erscheinen seltsame Nachkommastellen wie 24.187899999999997. Das passiert nicht immer, aber oft genug, um die Logik des Preisvergleichs zu stören. Ich habe gegoogelt und herausgefunden, dass es den Typ `decimal` gibt, verstehe aber den Unterschied nicht. Beide speichern anscheinend Bruchzahlen. Als ich `double` durch `decimal` ersetzte: ```csharp decimal price = 19.99m; decimal tax = 0.21m; decimal total = price * (1 + tax); Console.WriteLine(total); // 24.1879 ``` Funktionierte alles perfekt. Aber ich habe gehört, dass `decimal` langsamer ist und mehr Speicher verbraucht. Fragen: 1. Was ist der grundlegende Unterschied zwischen `double` und `decimal`? 2. Wann sollte man `decimal` verwenden?