database tag Wie interpretiere ich die Genauigkeit und Skalierung einer Zahl in einer Datenbank?




title tag wordpress (3)

Genauigkeit, Skalierung und Länge in der SQL Server 2000-Dokumentation lautet:

Präzision ist die Anzahl der Ziffern in einer Zahl. Scale ist die Anzahl der Stellen rechts vom Dezimalpunkt in einer Zahl. Zum Beispiel hat die Zahl 123.45 eine Genauigkeit von 5 und eine Skala von 2.

Ich habe die folgende Spalte in einer Datenbank angegeben: Dezimal (5,2)

Wie interpretiert man das?

Entsprechend den Eigenschaften in der Spalte, wie in SQL Server Management Studio angezeigt, kann ich sehen, dass es bedeutet: dezimal (numerische Genauigkeit, numerische Skalierung).

Was bedeuten Präzision und Maßstab real?

Es wäre leicht, dies als eine Dezimalstelle mit 5 Ziffern und zwei Dezimalstellen zu interpretieren ... dh 12345,12

PS Ich konnte die richtige Antwort von einem Kollegen feststellen, hatte aber große Schwierigkeiten online eine Antwort zu finden. Daher möchte ich die Frage und die Antwort hier auf Stackoverflow für zukünftige Referenz dokumentiert haben.


Die Genauigkeit einer Zahl ist die Anzahl der Ziffern.

Maßstab einer Zahl ist die Anzahl der Nachkommastellen.

Bei der Festlegung von Genauigkeit und Skalierung bei der Felddefinition wird im Allgemeinen davon ausgegangen, dass sie Maximalwerte darstellen .

Beispiel: Ein Dezimalfeld, das mit der precision=5 und der scale=2 würde folgende Werte zulassen:

  • 123.45 (p = 5, s = 2)
  • 12.34 (p = 4, s = 2)
  • 12345 (p = 5, s = 0)
  • 123.4 (p = 4, s = 1)
  • 0 (p = 0, s = 0)

Die folgenden Werte sind nicht zulässig oder würden einen Datenverlust verursachen:

  • 12.345 (p = 5, s = 3) => könnte in 12.35 (p = 4, s = 2)
  • 1234.56 (p = 6, s = 2) => könnte in 1234.6 (p = 5, s = 1)
  • 123.456 (p = 6, s = 3) => könnte in 123.46 (p = 5, s = 2)
  • 123450 (p = 6, s = 0) => außerhalb des Bereichs

Beachten Sie, dass der Bereich im Allgemeinen durch die Genauigkeit definiert wird: |value| < 10^p |value| < 10^p ...


Die numerische Genauigkeit bezieht sich auf die maximale Anzahl von Ziffern, die in der Zahl vorhanden sind.

dh 1234567.89 hat eine Genauigkeit von 9

Numerische Skalierung bezieht sich auf die maximale Anzahl von Dezimalstellen

dh 123456.789 hat eine Skala von 3

Daher ist der maximal zulässige Wert für Dezimal (5,2) 999,99





scale