Apa perbedaan antara presisi dan skala?

141

Apa perbedaan antara presisi dan skala dalam Oracle? Dalam tutorial mereka biasanya membiarkan skala kosong dan mengatur presisi ke 6 ketika membuat kunci utama.

Untuk apa presisi dan skala berdiri?

user700792
sumber

Jawaban:

203

Presisi 4, skala 2: 99,99

Presisi 10, skala 0: 9999999999

Presisi 8, skala 3: 99999.999

Presisi 5, skala -3: 99999000

koljaTM
sumber
15
dapatkah Anda menjelaskan perilaku skala negatif?
Geek
2
kelihatannya seperti putaran / mengabaikan bahwa banyak nilai integer yang tersisa dari desimal
JDPeckham
3
perlu diingat bahwa presisi selalu termasuk porsi skala. misalnya: Presisi 4, skala 2 - akan gagal angka> 99.9999 ..; coba: pilih cast (99.99999 sebagai NUMBER (4,2)) dari dual; //BAIK; pilih cast (100.9 as NUMBER (4,2)) dari dual; //GAGAL;
Jama Djafarov
@JamaDjafarov 99.99999 gagal seperti yang dapat dilihat di bawah ini: `21:53:54 CB900 @ XYZ> pilih pemeran (99.99999 sebagai NUMBER (4,2)) dari dual; pilih cast (99.99999 sebagai NUMBER (4,2)) dari dual * ERROR pada baris 1: ORA-01438: nilai lebih besar dari presisi yang ditentukan yang diizinkan untuk kolom ini 21:52:32 CB900 @ ASCEND1> versi pilih dari v $ instance; VERSI: KAPAN ------------------------------------------------- - 12.1.0.2.0 `
Phalgun
@Phalgun memilih pemeran (99,9999 sebagai NUMBER (4,2)) dari DUAL; adalah contoh buruk karena pemotongan akan mengumpulkan angka dari 99 hingga 100, yang kemudian terlalu besar untuk NUMBER (4,2). Coba pilih pemeran (88.8888 sebagai NUMBER (4,2)) dari DUAL; alih-alih melihat responsnya adalah 88,89.
superbeck
58

Presisi adalah jumlah digit yang signifikan. Oracle menjamin portabilitas angka dengan presisi mulai dari 1 hingga 38.

Skala adalah jumlah digit ke kanan (positif) atau kiri (negatif) dari titik desimal. Skala dapat berkisar dari -84 hingga 127.

Dalam kasus Anda, ID dengan presisi 6 berarti ia tidak akan menerima angka dengan 7 atau lebih angka signifikan.

Referensi:

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

Halaman itu juga memiliki beberapa contoh yang akan membuat Anda memahami ketepatan dan skala.

manojlds
sumber
1
itu artinya bumber terakhir adalah 1000000?
user700792
9
+1: Saya pikir kunci untuk memahami ini adalah untuk memahami format angka internal - mantissa dan eksponen. Precision menempatkan batas pada kemungkinan panjang mantissa, dan skala menempatkan batas pada eksponen minimum yang mungkin.
David Aldridge
@ Davidvidridge, saya menggemakan Anda. Saya pikir Anda harus mempertimbangkan mempostingnya sebagai jawaban mengenai mantissa dan eksponen. Sejumlah sebenarnya disimpan dalam format panjang variabel.
Lalit Kumar B
55

Presisi adalah jumlah total digit, bisa antara 1 dan 38.
Skala adalah jumlah digit setelah titik desimal, dapat juga ditetapkan sebagai negatif untuk pembulatan.

Contoh:
NUMBER (7,5): 12.12345
NUMBER (5.0): 12345

Lebih detail di situs web ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Ayman
sumber
Dan Skala adalah jumlah digit ke kanan (positif) atau kiri (negatif) dari titik desimal, tidak hanya setelah titik desimal.
Lalit Kumar B
Lihatlah contoh koljaTM. Presisi adalah berapa banyak digit signifikan, yang mungkin memiliki nilai (yaitu, bukan hanya "0" sebagai pemegang tempat). Skala menunjukkan bagaimana mereka jatuh sehubungan dengan titik desimal. Skala dapat menjadi negatif, menunjukkan ketepatan apa DI ATAS 0 yang TIDAK Anda pedulikan. NUMBER (1, -4): hanya memungkinkan 10 nilai: 00000, 10000, 20000 ... 90000
gordon
1
Presisi BUKAN HANYA jumlah total digit. Seperti yang dijelaskan David Aldridge dalam komentarnya kepada manojlds, itu adalah mantissa - berapa banyak digit signifikan yang Anda pedulikan. Skala yang dianggap sebagai eksponen adalah penjelasan yang lebih akurat, meskipun esoteris. Setiap skala negatif tidak akan memiliki digit setelah titik desimal, dan akan memiliki angka 0s sebagai penampung di sebelah kiri titik desimal. NUMBER (1, -4) akan memiliki 5 digit, tetapi hanya yang pertama, di tempat 10.000 yang akan memiliki nilai yang Anda pedulikan.
gordon
34

Mungkin lebih jelas:

Perhatikan bahwa presisi adalah jumlah total digit, termasuk skala

NUMBER (Presisi, Skala)

Presisi 8, skala 3: 87654.321

Presisi 5, skala 3: 54.321

Presisi 5, skala 1: 5432.1

Presisi 5, skala 0: 54321

Presisi 5, skala -1: 54320

Presisi 5, skala -3: 54000

Eric Bole-Feysot
sumber
19

Skala adalah jumlah digit setelah titik desimal (atau titik dua tergantung lokal Anda)

Presisi adalah jumlah total digit signifikan

skala VS presisi

ylerjen
sumber
1

presisi: Ini adalah jumlah digit sebelum atau setelah titik radix. EX: 123.456 di sini presisi adalah 6.

Skala: Ini adalah jumlah total digit setelah titik radix. EX: 123.456 di sini Scaleis 3

Bablu Gope
sumber
-5

Jika nilainya 9999.988 dan Presisi 4, skala 2 maka itu berarti 9999 (ini merepresentasikan presisi) .99 (skala adalah 2 sehingga .988 dibulatkan menjadi .99)

Jika nilainya 9999.9887 dan presisi 4, skala adalah 2 maka itu berarti 9999.99

yogi
sumber
7
Tidak, presisi adalah jumlah digit signifikan untuk disimpan. Dalam kedua kasus Anda, presisi yang disimpan adalah 6 dan skalanya adalah 2.
David Aldridge