Frage

Ich brauche ein paar Geld bezogenen Felder in der Datenbank zu speichern, aber ich bin mir nicht sicher, welcher Datentyp zwischen Geld zu verwenden, und dezimal .

War es hilfreich?

Lösung

Dezimal und Geld sollte recht zuverlässig sein. Was kann ich Ihnen versichern (von schmerzhaften persönlichen Erfahrungen aus geerbten Anwendungen) ist NICHT Verwendung Schwimmer!

Andere Tipps

Ich verwende Dezimal immer; nie zuvor Geld verwendet wird.

Vor kurzem fand ich einen Artikel über dezimal gegen Typ Gelddaten in SQL Server, die Sie interessant finden könnte:

Geld vs dezimal

Es scheint auch, dass der Geld-Datentyp nicht immer in genauen Ergebnissen führt, wenn Sie Berechnungen mit ihm durchführen: klicken

Was ich als wel in der Vergangenheit getan hat, wird ein INT-Feld verwendet wird, und speichern Sie die Menge in Cent (Cent / dollarcent).

Ich denke, es kommt auf die Genauigkeit und Skalierung. IIRC, money ist 4DP. Wenn das in Ordnung ist, drückt money Ihre Absicht. Wenn Sie mehr Kontrolle möchten, verwenden Sie decimal mit einer bestimmten Genauigkeit und Skalierung.

Es hängt von Ihrer Anwendung !!! Ich in Finanzdienstleistungen arbeiten, wo wir normalerweise Preis prüfen signifikant 5 Dezimalstellen nach dem Punkt sein, was natürlich, wenn Sie ein paar Millionen bei 3.12345pence kaufen / Cent ist eine erhebliche Menge. Einige Anwendungen werden ihre eigenen SQL-Typ liefern, dies zu umgehen.

Auf der anderen Seite, könnte dies nicht notwendig sein. Auftragnehmer Raten schienen immer auf den nächsten 100 £ gerundet werden, aber zur Zeit scheinen nächstes £ 25 Pfund in der aktuellen Kreditkrise zu sein.

Sie richten nicht Ihre Gedanken basierend auf dem verfügbaren Datentypen. Vielmehr Ihre Anforderung analysieren und dann sehen, welcher Datentyp am besten paßt. Float ist jederzeit die schlechteste Wahl, um die Begrenzung der Architektur bei der Speicherung von binärer Version von Gleitkommazahlen berücksichtigen. Geld ist eine Standard-Einheit und wird sicherlich mehr Unterstützung hat für Geld bezogene Operationen Handhabung. Im Falle von dezimal, werden Sie jeden und alles im Griff haben, aber Sie wissen, es ist nur Ihnen, die eine Dezimal-Typ ist der Umgang, also keine Überraschungen, die Sie mit anderen beiden Datentypen können.

Mit dezimal und verwenden mehr Dezimalstellen als Sie denken müssen Sie damit caclulations korrekt. Geld nicht alwys korrekte Ergebnisse in Berechnungen zurück. Unter keinen Umständen float oder real wie diese verwenden, sind ungenauen Datentypen und können Berechnungen verursachen, falsch sein (vor allem, da sie komplexer werden).

Für einige Daten (wie Geld), wo Sie keine Annäherung oder Änderungen wollen aufgrund Wert schweben, müssen Sie sicher sein, dass die Daten nie ‚schwebenden‘, es auf beiden Seiten des Dezimalpunkts starr sein muss.
Ein einfacher Weg, um sicher zu sein ist, auf dem Wert, indem sie in INTEGER-Datentyp umzuwandeln, und sicher sein, dass, während Sie den Wert retrive wird Dezimalpunkt an den richtigen Stelle platziert.
z.B.
1. Um $ 240,10 in der Datenbank zu speichern.
2. Konvertieren Sie es in eine reine Integralform: 24010 (Sie ihr nur die Verschiebung der Dezimalstelle weiß)
. 3. Revert es auf dem richtigen Dezimal Zustand zurück. Setzen Sie dezimal in 2 Positionen von rechts. $ 240,10

So, während in databse wobei in einer starren Integer-Form sein wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top