Jaka jest różnica między precyzją a skalą?


141

Jaka jest różnica między precyzją a skalą w Oracle? W samouczkach zwykle pozostawiają pustą skalę i ustawiają precyzję na 6 podczas tworzenia klucza podstawowego.

Co oznacza precyzja i skala?

Odpowiedzi:


203

Precyzja 4, skala 2: 99,99

Precyzja 10, skala 0: 9999999999

Precyzja 8, skala 3: 99999,999

Precyzja 5, skala -3: 99999000


15
czy możesz wyjaśnić zachowanie skal ujemnych?
Geek

2
wygląda jak zaokrągla / ignoruje wiele wartości całkowitych po lewej stronie dziesiętnej
JDPeckham

3
należy pamiętać, że precyzja zawsze obejmuje część skali. np .: Precyzja 4, skala 2 - nie powiedzie się dowolna liczba> 99,9999 ..; spróbuj: wybierz rzutowanie (99.99999 jako NUMBER (4,2)) z dual; //DOBRZE; wybierz obsadę (100,9 jako NUMBER (4,2)) z dual; //ZAWIEŚĆ;
Jama Djafarov

@JamaDjafarov 99.99999 nie powiodło się, jak widać poniżej: `21:53:54 CB900 @ XYZ> wybierz obsadę (99.99999 jako NUMBER (4,2)) z dual; wybierz rzutowanie (99,99999 jako NUMBER (4,2)) z podwójnego * ERROR w wierszu 1: ORA-01438: wartość większa niż określona precyzja dozwolona dla tej kolumny 21:52:32 CB900 @ ASCEND1> wybierz wersję z v $ instancji; WERSJA ------------------------------------------------- - 12.1.0.2.0 ''
Phalgun

@Phalgun wybierz rzut (99.9999 jako NUMBER (4,2)) z DUAL; jest złym przykładem, ponieważ obcięcie zaokrągli liczbę w górę z 99 do 100, co jest wtedy zbyt duże dla LICZBY (4,2). Spróbuj wybrać rzutowanie (88.8888 jako NUMBER (4,2)) z DUAL; zamiast tego zobaczyć odpowiedź to 88,89.
superbeck

58

Precyzja to liczba cyfr znaczących. Oracle gwarantuje przenośność numerów z dokładnością od 1 do 38.

Skala to liczba cyfr po prawej (dodatnia) lub po lewej (ujemna) przecinka dziesiętnego. Skala może wynosić od -84 do 127.

W Twoim przypadku identyfikator z dokładnością 6 oznacza, że ​​nie przyjmie liczby zawierającej 7 lub więcej cyfr znaczących.

Odniesienie:

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

Ta strona zawiera również kilka przykładów, które pomogą Ci zrozumieć precyzję i skalę.


1
to znaczy, że ostatni bumber będzie 1000000?
user700792

9
+1: Myślę, że kluczem do zrozumienia tego jest zrozumienie wewnętrznego formatu liczb - mantysy i wykładnika. Precyzja nakłada ograniczenie na możliwą długość mantysy, a skala nakłada ograniczenie na możliwe minimum wykładnika.
David Aldridge

@DavidAldridge Powtarzam ci. Myślę, że powinieneś rozważyć opublikowanie tego jako odpowiedzi dotyczącej mantysy i wykładnika. Liczba jest faktycznie przechowywana w formacie o zmiennej długości.
Lalit Kumar B

55

Precyzja to całkowita liczba cyfr, która może wynosić od 1 do 38.
Skala to liczba cyfr po przecinku, może być również ustawiona jako ujemna do zaokrąglania.

Przykład:
NUMBER (7,5): 12.12345
NUMBER (5,0): 12345

Więcej szczegółów na stronie ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832


Skala to liczba cyfr po prawej (dodatnia) lub lewej (ujemna) przecinka, a nie tylko po przecinku.
Lalit Kumar B

Spójrz na przykład koljaTM. Precyzja to liczba cyfr znaczących, które mogą mieć wartość (tj. Nie tylko „0” jako symbole zastępcze). Skala wskazuje, jak wypadają one w odniesieniu do przecinka dziesiętnego. Skala może być ujemna, wskazując na jaką precyzję POWYŻEJ 0 NIE obchodzi Cię. NUMBER (1, -4): dopuszcza tylko 10 wartości: 00000, 10000, 20000 ... 90000
gordon

1
Precyzja to NIE TYLKO całkowita liczba cyfr. Jak wyjaśnił David Aldridge w swoim komentarzu do ludzi, jest to mantysa - na ilu znaczących cyfrach Ci zależy. Skala traktowana jako wykładnik jest dokładniejszym, aczkolwiek ezoterycznym wyjaśnieniem. Żadna skala ujemna nie będzie miała cyfr po przecinku i będzie miała tyle zer, co znaczniki miejsca po lewej stronie przecinka. LICZBA (1, -4) będzie miała 5 cyfr, ale tylko pierwsza z miejsc 10 000 będzie miała wartość, na której Ci zależy.
gordon

34

Może bardziej jasne:

Zauważ, że dokładność to całkowita liczba cyfr, łącznie ze skalą

NUMBER (dokładność, skala)

Precyzja 8, skala 3: 87654.321

Precyzja 5, skala 3: 54,321

Precyzja 5, skala 1: 5432,1

Precyzja 5, skala 0: 54321

Precyzja 5, skala -1: 54320

Precyzja 5, skala -3: 54000


19

Skala to liczba cyfr po przecinku (lub dwukropku, w zależności od ustawień regionalnych)

Precyzja to całkowita liczba cyfr znaczących

skala VS precyzja


1

precyzja: całkowita liczba cyfr przed lub po punkcie podstawy. Np .: 123,456 tutaj dokładność wynosi 6.

Skala: całkowita liczba cyfr po punkcie podstawy. Np .: 123.456 tutaj Skala to 3


-5

Jeśli wartość to 9999,988, a dokładność 4, skala 2, to oznacza 9999 (reprezentuje precyzję). 99 (skala to 2, więc .988 jest zaokrąglane do 0,99)

Jeśli wartość wynosi 9999,9887, a dokładność wynosi 4, skala wynosi 2, to oznacza 9999,99


7
Nie, precyzja to liczba cyfr znaczących do zapisania. W obu przypadkach zapisana dokładność to 6, a skala to 2.
David Aldridge,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.