2 Stimmen

Sql Server 2005 Datentypen

Was ist der Unterschied zwischen Real, Float, Decimal und Money. Und vor allem, wann würde ich sie verwenden. Wie ich verstehe - real und float sind ungefähre Typen, was bedeutet, dass sie nicht den genauen Wert speichern. Warum sollte man das überhaupt wollen?

Danke

2voto

mjv Punkte 70143

real y Schwimmer numerische Typen sind nützlich, um einen sehr breiten Wertebereich zu handhaben, wie er bei physikalischen Dimensionen oder mathematischen Ergebnissen vorkommt.

Der Verlust an Genauigkeit, der dadurch entsteht, wenn beispielsweise Werte addiert werden, die nicht im gleichen Bereich liegen, z. B. 0,00002468 + 1,23E9 (d. h. 1.230.000), ist für praktische Zwecke normalerweise akzeptabel. Dies ist ein kleiner Tribut an die relativ kompakten Speicheranforderungen dieser Gleitkommatypen.

Die Typen "Dezimal" und "Geld" decken nicht einen so großen Bereich ab (aber sie decken Bereiche ab, die über die meisten typischen Buchhaltungsanwendungen hinausgehen) und weisen keine dieser verlustbehafteten Verhaltensweisen mit Rundungen und dergleichen auf.

Ausführliche Informationen finden Sie im MS-SQL-Dokument. Die folgende Tabelle enthält eine indikativ Genauigkeit, Reichweite und Speicherbedarf für verschiedene Typen.

Type         Max value               precision(\*)   Storage
money        +/-922,000,000,000,000     3 (4?)      8 bytes
smallmoney   +/-200,000                 3?          4 bytes
decimal      varies (as defined)       varies       varies 3 to 17

real         +/- 3.4 \* 10^38            7 digits  4 bytes
float "56"   +/- 1.7 \* 10 ^308         15 digits  8 bytes   (float can also be declared to be just like a real)       

(*) Genauigkeit : Bei den "exakten" Typen ist dies die Anzahl der Stellen nach dem Dezimalpunkt. Bei den "verlustbehafteten" Reals und Floats ist dies die Anzahl der signifikanten Ziffern.

1voto

barkmadley Punkte 5109

Geld ist ein exakter Datentyp, d. h. er ist zwischen seiner oberen und unteren Grenze kontinuierlich. Sie verwenden ihn in der Regel, wenn Sie Geldwerte speichern und keine Präzisionsverluste und Rundungsfehler aufgrund von IEEE754 in Kauf nehmen wollen. Decimal ist ebenfalls ein exakter Datentyp, der bis zu einer bestimmten Anzahl von Dezimalstellen (die Sie angeben können) verlustfrei ist. Real ist äquivalent zu float(24).

Um es deutlich zu machen: Bei der Division kann es immer noch zu Präzisionsverlusten kommen, aber bei allen anderen grundlegenden mathematischen Operationen gibt es keine Präzisionsverluste für Geld- und Dezimaltypen.

Siehe hier für eine Erläuterung der verschiedenen Transact SQL-Datentypen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X