Unterschied zwischen DECIMAL und FLOAT in DB2 bzw. SQL?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

"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).


wotan38  16.06.2016, 16:29

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.

0

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


wotan38  16.06.2016, 16:38

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.

0