Was ist der Unterschied zwischen Präzision und Skalierung?

141

Was ist der Unterschied zwischen Präzision und Skalierung in Oracle? In Tutorials lassen sie normalerweise die Skalierung leer und setzen die Genauigkeit beim Erstellen eines Primärschlüssels auf 6.

Wofür stehen Präzision und Skalierung?

user700792
quelle

Antworten:

203

Präzision 4, Maßstab 2: 99,99

Präzision 10, Maßstab 0: 9999999999

Präzision 8, Maßstab 3: 99999,999

Präzision 5, Maßstab -3: 99999000

koljaTM
quelle
15
Können Sie bitte das Verhalten negativer Skalen erklären?
Geek
2
sieht aus wie Runden / ignoriert, dass viele ganzzahlige Werte von der Dezimalstelle
übrig sind
3
Beachten Sie, dass Präzision immer den Skalenteil umfasst. zB: Präzision 4, Skala 2 - wird jede Zahl> 99,9999 verfehlen ..; Versuch: Wähle Besetzung (99.99999 als NUMMER (4,2)) aus Dual; //OK; wähle Besetzung (100,9 als NUMMER (4,2)) aus dual; //SCHEITERN;
Jama Djafarov
@JamaDjafarov 99.99999 schlägt fehl, wie unten zu sehen ist: `21:53:54 CB900 @ XYZ> wähle Besetzung (99.99999 als NUMMER (4,2)) aus dual; Wählen Sie cast (99.99999 als NUMBER (4,2)) aus dual * ERROR in Zeile 1: ORA-01438: Wert größer als die für diese Spalte angegebene Genauigkeit 21:52:32 CB900 @ ASCEND1> Version aus v $ instance auswählen; AUSFÜHRUNG ------------------------------------------------- - 12.1.0.2.0 `
Phalgun
@Phalgun Select Cast (99.9999 als NUMBER (4,2)) von DUAL; ist ein schlechtes Beispiel, weil die Kürzung die Zahl von 99 auf 100 aufrundet, was dann für eine NUMMER (4,2) zu groß ist. Versuchen Sie, Besetzung (88.8888 als NUMMER (4,2)) von DUAL auszuwählen. Stattdessen lautet die Antwort 88,89.
Superbeck
58

Präzision ist die Anzahl der signifikanten Stellen. Oracle garantiert die Portabilität von Zahlen mit einer Genauigkeit von 1 bis 38.

Die Skala ist die Anzahl der Stellen rechts (positiv) oder links (negativ) vom Dezimalpunkt. Die Skala kann von -84 bis 127 reichen.

In Ihrem Fall bedeutet ID mit Genauigkeit 6, dass keine Zahl mit 7 oder mehr signifikanten Stellen akzeptiert wird.

Referenz:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Diese Seite enthält auch einige Beispiele, die Ihnen das Verständnis von Präzision und Skalierbarkeit erleichtern.

manojlds
quelle
1
das heißt, die letzte Zahl wird 1000000 sein?
Benutzer700792
9
+1: Ich denke, der Schlüssel zum Verständnis ist das Verständnis des internen Zahlenformats - Mantisse und Exponent. Durch Präzision wird die mögliche Länge der Mantisse begrenzt, und durch Skalierung wird das mögliche Minimum des Exponenten begrenzt.
David Aldridge
@ DavidAldridge Ich stimme dir zu. Ich denke, Sie sollten in Betracht ziehen, es als Antwort auf die Mantisse und den Exponenten zu veröffentlichen. Eine Nummer wird tatsächlich in einem Format variabler Länge gespeichert.
Lalit Kumar B
55

Präzision ist die Gesamtzahl der Stellen, kann zwischen 1 und 38 liegen. Die
Skala ist die Anzahl der Stellen nach dem Dezimalpunkt und kann auch als negativ für die Rundung festgelegt werden.

Beispiel:
NUMMER (7,5): 12,12345
NUMMER (5,0): 12345

Weitere Informationen finden Sie auf der ORACLE-Website:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Ayman
quelle
Und Skalieren ist die Anzahl der Stellen rechts (positiv) oder links (negativ) vom Dezimalpunkt, nicht nur nach dem Dezimalpunkt.
Lalit Kumar B
Schauen Sie sich das Beispiel von koljaTM an. Präzision ist, wie viele signifikante Stellen einen Wert haben können (dh nicht nur "0" als Platzhalter). Die Skala gibt an, wie diese in Bezug auf den Dezimalpunkt fallen. Die Skalierung kann negativ sein und zeigt an, welche Genauigkeit ÜBER 0 Sie NICHT interessieren. NUMMER (1, -4): erlaubt nur 10 Werte: 00000, 10000, 20000 ... 90000
Gordon
1
Präzision ist NICHT NUR die Gesamtzahl der Ziffern. Wie David Aldridge in seinem Kommentar zu manojlds erklärte, ist es die Mantisse - wie viele wichtige Ziffern Sie interessieren. Die Skala, die als Exponent betrachtet wird, ist eine genauere, wenn auch esoterische Erklärung. Jede negative Skala hat nach dem Dezimalpunkt keine Ziffern und so viele Nullen als Platzhalter links vom Dezimalpunkt. NUMBER (1, -4) hat 5 Ziffern, aber nur die erste an der Stelle von 10.000 hat einen Wert, den Sie interessieren.
Gordon
34

Vielleicht klarer:

Beachten Sie, dass die Genauigkeit die Gesamtzahl der Stellen einschließlich der Skalierung ist

NUMMER (Präzision, Skala)

Präzision 8, Maßstab 3: 87654.321

Präzision 5, Maßstab 3: 54,321

Präzision 5, Maßstab 1: 5432.1

Präzision 5, Maßstab 0: 54321

Präzision 5, Maßstab -1: 54320

Präzision 5, Maßstab -3: 54000

Eric Bole-Feysot
quelle
19

Skalieren ist die Anzahl der Ziffern nach dem Dezimalpunkt (oder der Doppelpunkt je nach Gebietsschema).

Präzision ist die Gesamtzahl der signifikanten Stellen

Skala VS Präzision

ylerjen
quelle
1

Genauigkeit: Dies ist die Gesamtzahl der Stellen vor oder nach dem Radixpunkt. EX: 123.456 hier ist die Genauigkeit 6.

Maßstab: Dies ist die Gesamtzahl der Stellen nach dem Radixpunkt. EX: 123.456 hier Scaleis 3

Bablu Gope
quelle
-5

Wenn der Wert 9999.988 und Präzision 4, Skala 2 ist, bedeutet dies 9999 (es steht für Präzision) .99 (Skala ist 2, also .988 wird auf .99 gerundet)

Wenn der Wert 9999,9887 und die Genauigkeit 4 beträgt, die Skala 2 ist, bedeutet dies 9999,99

Yogi
quelle
7
Nein, Genauigkeit ist die Anzahl der zu speichernden signifikanten Stellen. In beiden Fällen ist die gespeicherte Genauigkeit 6 und die Skala 2.
David Aldridge