Saya memiliki kolom berikut yang ditentukan dalam database: desimal (5,2)
Bagaimana seseorang menafsirkan ini?
Menurut properti pada kolom seperti yang terlihat di SQL Server Management studio saya dapat melihat bahwa itu berarti: desimal (ketepatan Numerik, skala Numerik).
Apa arti presisi dan skala secara riil?
Akan mudah untuk menafsirkan ini sebagai desimal dengan 5 digit dan dua tempat desimal ... yaitu 12345.12
PS Saya sudah bisa menentukan jawaban yang benar dari seorang kolega tetapi mengalami kesulitan besar menemukan jawaban online. Karena itu, saya ingin agar pertanyaan dan jawaban didokumentasikan di sini di stackoverflow untuk referensi di masa mendatang.
Ketepatan angka adalah jumlah digit.
Skala suatu angka adalah jumlah digit setelah titik desimal.
Apa yang secara umum tersirat ketika menetapkan presisi dan skala pada definisi lapangan adalah bahwa mereka mewakili nilai maksimum .
Contoh, bidang desimal yang didefinisikan dengan
precision=5
danscale=2
akan memungkinkan nilai-nilai berikut: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)Nilai-nilai berikut tidak diizinkan atau akan menyebabkan kehilangan data:
12.345
(p = 5, s = 3) => dapat dipotong ke dalam12.35
(p = 4, s = 2)1234.56
(p = 6, s = 2) => dapat dipotong menjadi1234.6
(p = 5, s = 1)123.456
(p = 6, s = 3) => dapat dipotong menjadi123.46
(p = 5, s = 2)123450
(p = 6, s = 0) => di luar jangkauanPerhatikan bahwa kisaran umumnya ditentukan oleh presisi:
|value| < 10^p
...sumber
12345000
? Presisi 5 atau 8? Jika 5, dengan Skala apa? Skala -3?123450 (p=6,s=0)
luar jangkauan? 123450 memiliki 6 digit dan tidak ada digit setelah satu titik?123450 (p=6,s=0)
akan berada di luar jangkauan untuk bidang desimal dengan 5 presisi (sebagaimana disebutkan dalam contoh). Karena ketepatan angka yang ingin Anda simpan di bidang harus kurang dari atau sama dengan ketepatan bidang.Presisi, Skala, dan Panjang dalam dokumentasi SQL Server 2000 berbunyi:
sumber