Ich sehe immer wieder Leute, die Doubles in C# verwenden. Ich weiß, dass ich irgendwo gelesen habe, dass Doubles manchmal an Präzision verlieren. Meine Frage ist, wann sollte ich einen Double-Typ und wann einen Dezimaltyp verwenden? Welcher Typ ist für Geldberechnungen geeignet? (z. B. größer als 100 Millionen Dollar)
Man braucht nicht einmal sehr große/kleine Werte, um Unterschiede zwischen der doppelten Basis-2-Näherung und den tatsächlichen Basis-10-Werten festzustellen, da viele kleine Werte nicht genau gespeichert werden können. Berechnen Sie "1 - 0,1 - 0,9" (stellen Sie sicher, dass der Compiler die Gleichung nicht optimiert), und vergleichen Sie sie mit Null. Sie werden feststellen, dass das Ergebnis bei Doubles etwa 2e-17 statt 0 ist (stellen Sie sicher, dass Sie einen Vergleich durchführen, da viele Print/ToString-Funktionen Doubles nach einer bestimmten Anzahl von Dezimalstellen abrunden, um diese Art von Fehlern zu vermeiden).
8 Stimmen
Möchten Sie Bruchteile von Cents? (wie an Tankstellen)
0 Stimmen
stackoverflow.com/questions/803225/
4 Stimmen
Es gibt eigentlich eine faire Antwort: decimal funktioniert wie long und int (es ist ein ganzzahliger Typ!), aber es hat irgendwo in seiner Syntax und seinem Ausgabeformat einen Punkt (siehe de.wikipedia.org/wiki/Ganzzahl_(Computer_wissenschaft) ). Double und Float arbeiten mit einer Mantisse und einem Exponenten (siehe de.wikipedia.org/wiki/Schwebender_Punkt ). Das war's.