Unterschied zwischen DECIMAL und FLOAT in DB2 bzw. SQL?
Hallo, könnte mir jemand bitte erklären was der Unterschied zwischen DECIMAL und FLOAT in SQL ist und wann ich den einen oder den anderen verwenden muss! Vielen Dank im Voraus!
2 Antworten
"floats" (eigentlich REAL in Standard-SQL) entsprechen einer 32-Bit Gleitkommazahl (ähnlich wie double) mit der die Hardware deines Computers standardmäßig rechnet.
Siehe auch https://de.wikipedia.org/wiki/Gleitkommazahl
Bei NUMERIC (in Standard-SQL, oder auch DECIMAL z.B. in SQL-Server) kannst du (mehr oder weniger) angeben, wieviele Nachkommastellen du berücksichtigt haben möchtest. (Fixed Point arithmetic). Bei größeren Genauigkeiten wird die Arithmetik aber in Software umgesetzt und kann sehr langsam werden.
NUMERIC eignet sich z.B. für Geldangaben (NUMERIC(6,2) solange sich alles unter einer Millonen bewegt).
In meinem DB2 wird zwischen numeric und decimal nicht wirklich unterschieden. Im Grunde genommen ist numeric das Selbe wie decimal ohne Kommastellen. So jedenfalls kommen die Daten beim Lesen aus der Datenbank im Programm an. Ob das bei anderen Datenbanksystem auch so ist, weiß ich nicht.
Dezimal ist nur eine Beschreibung für die stellen nach dem Komma. Das was du meinst ist vermutlich der unterschied zwischen Double und Float. Float ist genauer als Double. Soweit mir bekannt ist kannst du mit Double bis zu 8 stellen und bei Float bis zu 16 stellen nach dem Komma anzeigen.
Grüße
Ich habe eher 16 bzw. 32 Stellen in Erinnerung. 8 Stellen für Gleitkomma dürfte kein Angebot für die Praxis sein, dann besser 64 Stellen bei der doppelten Genauigkeit.
In vielen statistischen Berechnungen müssen winzig kleine Differenzen aus sehr großen Zahlen ermittelt werden.