Menurut Dokumentasi Oracle:
Begini cara saya melihatnya :
- Saat
Precision
lebih besar dari Skala (mis.NUMBER(8,5)
), tidak masalah, ini langsung.Precision
berarti bilangan tersebut berjumlah 8 digit, 5 di antaranya adalah bagian pecahan (.→), jadi bagian bilangan bulat (←.) akan memiliki 3 digit. Ini mudah. -
Saat Anda melihat
Precision
lebih kecil dariScale
(mis.NUMBER(2, 5)
), ini berarti 3 hal :- Angka tidak akan memiliki bagian bilangan bulat, hanya bagian pecahan. Jadi 0 di bagian bilangan bulat tidak dihitung dalam perhitungan, Anda mengatakan .12345 bukan 0.12345. Faktanya, jika Anda hanya menentukan 1 digit di bagian bilangan bulat, itu akan selalu menghasilkan kesalahan.
Scale
mewakili jumlah total digit di bagian pecahan yang akan dimiliki nomor tersebut. 5 dalam hal ini. Jadi bisa .12345 atau .00098 tapi totalnya tidak lebih dari 5 digit.- Bagian pecahan dibagi menjadi 2 bagian, angka penting dan nol. Angka penting ditentukan oleh
Precision
, dan jumlah minimum nol sama dengan (Scale
-Precision
). Contoh :
di sini Angka harus memiliki minimal 3 angka nol di bagian pecahan. diikuti oleh 2 angka penting (bisa juga nol). Jadi 3 nol + 2 angka penting =5 yang merupakan
Scale
nomor.
Singkatnya, ketika Anda melihat misalnya NUMBER(6,9)
, ini memberi tahu kita bahwa bagian pecahan akan memiliki total 9 digit, dimulai dengan 3 angka nol wajib dan diikuti 6 digit.
Berikut beberapa contohnya :
SELECT CAST(.0000123 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012300
SELECT CAST(.000012345 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012345
SELECT CAST(.123456 AS NUMBER(3,4)) FROM dual; -- ERROR! must have a 1 zero (4-3=1)
SELECT CAST(.013579 AS NUMBER(3,4)) FROM dual; -- prints: 0.0136; max 4 digits, .013579 rounded to .0136