it-swarm.com.de

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

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

Wie interpretiert man das?

Anhand der in SQL Server Management Studio angezeigten Eigenschaften in der Spalte kann ich erkennen, dass dies bedeutet: Dezimal (numerische Genauigkeit, numerische Skala).

Was bedeuten Präzision und Skalierung in der Realität?

Es wäre einfach, dies als Dezimalzahl mit 5 Stellen und zwei Dezimalstellen zu interpretieren ... dh 12345.12

P.S. Ich konnte die richtige Antwort von einem Kollegen ermitteln, hatte jedoch große Schwierigkeiten, online eine Antwort zu finden. Als solches möchte ich die Frage und Antwort hier auf stackoverflow als zukünftige Referenz dokumentieren lassen.

216
mezoid

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

Die numerische Skala bezieht sich auf die maximale Anzahl von Dezimalstellen

dh 123456.789 hat eine Skala von 3

Der maximal zulässige Wert für die Dezimalzahl (5,2) beträgt daher 999,99

357
mezoid

Die Genauigkeit einer Zahl ist die Anzahl der Stellen.

Die Skala einer Zahl ist die Anzahl der Nachkommastellen.

Beim Festlegen der Genauigkeit und des Maßstabs für die Felddefinition wird im Allgemeinen vorausgesetzt, dass sie maximal Werte darstellen.

Beispiel: Ein mit precision=5 Und scale=2 Definiertes Dezimalfeld lässt die folgenden Werte zu:

  • 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 verursachen einen Datenverlust:

  • 12.345 (P = 5, s = 3) => könnte in 12.35 Abgeschnitten werden (p = 4, s = 2)
  • 1234.56 (P = 6, s = 2) => könnte in 1234.6 Abgeschnitten werden (p = 5, s = 1)
  • 123.456 (P = 6, s = 3) => könnte in 123.46 Abgeschnitten werden (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 ...

78
boumbh

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

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

21
Chris