Wieviele Stellen vor dem Komma sollte man für Finanzapplikationen reservieren, wenn der Datentyp ganzzahlig ist?
-
Idee:
Es wird nur mit ganzzahligen Datentypen gerechnet, z.B. BigInteger oder Int128
und dann bei der Ausgabe des Programms die Zahl in einen String umgewandelt und anschließend das Komma an der entsprechenden Position eingefügt.Aber wieviele Stellen sollte man hier für die Ziffern vor dem Komma einplanen?
Obwohl 2 Stellen für die Centbeträge beim Euro auf den ersten Blick genügen könnten, wurde die Umrechnung von DM in Euro ja auch nicht auf nur 2 Stellen vor dem Komma gemacht, sondern hier war der Umrechnungskurs genau 1,95583, also 5 Stellen vor dem Komma.Wie wird das in der Praxis gehandhabt?
-
Warum musst du denn überhaupt wissen an welcher Stelle nachher das Komma steht?
-
Na weil ich es ausgeben will.
Und die Zahl muß ja irgendwie gespeichert werden und dann muß die Position der Kommastelle ja festgelegt sein.
-
cooky451 schrieb:
Warum musst du denn überhaupt wissen an welcher Stelle nachher das Komma steht?
Für Fixpunktarithmetik muss man das wissen. Fließkommaarithhmetik ist halt keine Option für Geldbeträge.
-
Christoph schrieb:
cooky451 schrieb:
Warum musst du denn überhaupt wissen an welcher Stelle nachher das Komma steht?
Für Fixpunktarithmetik muss man das wissen. Fließkommaarithhmetik ist halt keine Option für Geldbeträge.
Aber 2.123 ist einfach kein gültiger Wert in der Währung. Das ist eher eine theoretische Zahl, und das würde ich strikt trennen. (Was kein Problem ist solange man damit nicht weiterrechnen muss.)
-
Naja, mit 128 Bits hast du 38 Stellen (oder 37? Sowas in der Ecke). das sollte selbst bei 10 Nachkommastellen locker reichen, bleiben immernoch 28 Stellen vor dem Komma.
Bei Geldbeträgen hast du ja normalerweise nur zwei Nachkommastellen. Okay, einige Provisionen oder ähnliches werden vielleicht mit 4 Nachkommastellen gerechnet, aber ausgegeben werden meist ja nur zwei). Da sollten die 128 Bits locker reichen.
Ich persönlich habe meine Decimal-Klasse als Template gemacht. Template-Argument ist die Anzahl der Bits. Dazu einen Typedef mit 128 Bits. Falls sich irgendwann mal rausstellen sollte dass die 128 Bits nicht mehr reichen, ändere ich einfach den Typedef. Man weiss ja nie. Inflation und so...
-
Wieso nicht gleich eine Klasse für Brüche, die im Zähler/Nenner jeweils ein 64bit Integer hat?
-
Microsoft hat sich beim SQL-Server für -922,337,203,685,477.5808 bis +922,337,203,685,477.5807 entschieden.
MfG SideWinder
-
SideWinder schrieb:
Microsoft hat sich beim SQL-Server für -922,337,203,685,477.5808 bis +922,337,203,685,477.5807 entschieden.
Vermutlich haben sie den positiven Maximalwert so gewählt, um auch Bill Gates' Privatkontostand immer korrekt darstellen zu können :>