Laden...

MS SQL/SQL CE Money vs Decimal

Erstellt von ilcsh vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.261 Views
I
ilcsh Themenstarter:in
25 Beiträge seit 2013
vor 10 Jahren
MS SQL/SQL CE Money vs Decimal

Hallo,

ich benötige in meiner Datenbank ein Feld in dem Werte (Betrag z.B. aus einer Rechnung) gespeichert werden.
Was empfiehlt sich hier, Money oder Decimal und was sind die Unterschiede?

Grüße

3.511 Beiträge seit 2005
vor 10 Jahren

Hi,

Money ist nicht so genau wie Decimal. Es kommt aber darauf an, was du mit dem eigentlichen Wert machst. Legst du den Wert nur ab, nimm Money. Fängts du an mit den Werten zu rechnen (addieren, subtrahieren), bleib bei Money. Fängst du an zu multiplizieren, oder dividieren, nimm Decimal.

Bei Rechenoperationen ist Money von der Performance her besser, da intern nur mit Ints gearbeitet wird und die Darstellung nur "angepasst" wird. Decimal hingegen ist halt ein reiner Fließkommatyp und ist bei intensiven Rechenoperationen daher maginal langsamer.

Um sicher zu gehen, würde ich gleich auf Decimal gehen. Der Money Datentyp ist ein Byte kleiner gegenüber dem default Decimal, der Verlust ist also gleich null (ausser du hast Milliarden von Rechnungen).

Gruß
Khalid

[Edit] Diese Ausage bezieht sich allerdings auf dem SQL Server, und nicht auf CE. Aber ich gehe mal davon aus, dass es das Gleiche ist.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

I
ilcsh Themenstarter:in
25 Beiträge seit 2013
vor 10 Jahren

Hey,

ok. In meiner Anwendung muss ich rechnen. Wenn ich in der DB Money wähle, entspricht das in Code Decimal?

Ich denke aber trotzdem das ich Decimal nehmen werde.

3.511 Beiträge seit 2005
vor 10 Jahren

Hi,

Wenn ich in der DB Money wähle, entspricht das in Code Decimal?

Ja

Gruß
Khalid

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

F
115 Beiträge seit 2012
vor 10 Jahren

Hi,

Money ist im Gegensatz zu Decimal kein ANSI SQL Datentyp. Wenn es keinen zwingenden Grund gegen die Verwendung gibt würde ich eher den ANSI-Typ verwenden.

Gruß´
f_igy

I
ilcsh Themenstarter:in
25 Beiträge seit 2013
vor 10 Jahren

Aufm SQL CE gibt muss ich den Typ "Nummeric" mit 2 Dezimalstellen nehem.

Danke euch 😃

3.511 Beiträge seit 2005
vor 10 Jahren

Vom wirtschaftlichen Aspekt müssen IMHO Beträge immer mit mindestens 4 Nachkommastellen gespeichert werden. Sonst heimst du dir etliche Rundungsfehler ein.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

16.825 Beiträge seit 2008
vor 10 Jahren

Sobalds ins Finanzrechnen geht arbeitet man nur noch mit Ganzzahlen in der Mill-Darstellung (Mill (currency)) - 0 Nachkommastellen.
Siehe auch What can be done to programming languages to avoid floating point pitfalls?

Der Wert in einer Rechnung ist ja bereits endberechnet und unterliegt jetzt auch keinen komplizierten, tiefen Berechnungen. Anders würde es eben im Banken- oder Aktienbereich aussehen. Hier sind Gleitkommazahlen tabu.

I
ilcsh Themenstarter:in
25 Beiträge seit 2013
vor 10 Jahren

Stimmt, danke dir 😉

Vom wirtschaftlichen Aspekt müssen IMHO Beträge immer mit mindestens 4 Nachkommastellen gespeichert werden. Sonst heimst du dir etliche Rundungsfehler ein.

@Abt Danke für die Info 😉