Jenis Data Desimal (Visual Basic)

Menahan nilai 128-bit (16-byte) yang ditandatangani yang mewakili angka bilangan bulat 96-bit (12-byte) yang diskalakan oleh pangkat variabel 10. Faktor penskalaan menentukan jumlah digit di sebelah kanan titik desimal; berkisar antara 0 hingga 28. Dengan skala 0 (tanpa tempat desimal), nilai terbesar yang mungkin adalah +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9228162514264337593543950335E+28). Dengan 28 tempat desimal, nilai terbesar adalah +/-7.9228162514264337593543950335, dan nilai terkecil bukan nol adalah +/-0.0000000000000000000000000001 (+/-1E-28).

Keterangan

Jenis data Decimal menyediakan jumlah digit signifikan terbanyak untuk angka. Ini mendukung hingga 29 digit signifikan dan dapat mewakili nilai lebih dari 7,9228 x 10^28. Sangat cocok untuk perhitungan, seperti keuangan, yang membutuhkan sejumlah besar digit tetapi tidak dapat mentolerir kesalahan pembulatan.

Nilai default dari Decimal adalah 0.

Tips Pemrograman

  • Presisi. Decimal bukan tipe data titik-mengambang. Struktur Decimal memegang nilai bilangan bulat biner, bersama dengan bit tanda dan faktor penskalaan bilangan bulat yang menentukan bagian nilai apa yang merupakan pecahan desimal. Karena itu, angka Decimal memiliki representasi yang lebih tepat dalam memori daripada jenis titik-mengambang (Single dan Double).

  • Performa. Jenis data Decimal adalah yang paling lambat dari semua jenis numerik. Anda harus menimbang pentingnya presisi terhadap performa sebelum memilih jenis data.

  • Pelebaran. Jenis data Decimal melebar menjadi Single atau Double. Artinya Anda dapat mengonversi Decimal ke salah satu jenis ini tanpa mengalami kesalahan System.OverflowException.

  • Nol Kelebihan. Visual Basic tidak menyimpan nol kelebihan dalam harfiah Decimal. Namun, variabel Decimal mempertahankan nol kelebian apa pun yang diperoleh secara komputasi. Contoh berikut mengilustrasikan langkah-langkah ini:

    Dim d1, d2, d3, d4 As Decimal
    d1 = 2.375D
    d2 = 1.625D
    d3 = d1 + d2
    d4 = 4.000D
    MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) &
          ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))
    

    Output MsgBox dalam contoh sebelumnya adalah sebagai berikut:

    d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
    
  • Ketik Karakter. Menambahkan karakter D jenis harfiah ke harfiah memaksanya ke jenis data Decimal. Menambahkan karakter jenis pengidentifikasi @ ke pengidentifikasi mana pun akan memaksanya ke jenis data Decimal.

  • Jenis Kerangka. Jenis yang sesuai dalam .NET Framework adalah struktur System.Decimal.

Rentang

Anda mungkin perlu menggunakan karakter jenis D untuk menetapkan nilai besar ke variabel Decimal atau konstanta. Persyaratan ini karena kompiler menafsirkan harfiah sebagai Long kecuali karakter jenis harfiah mengikuti harfiah, seperti yang ditunjukkan contoh berikut.

Dim bigDec1 As Decimal = 9223372036854775807   ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808   ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D  ' No overflow.

Deklarasi untuk bigDec1 tidak menghasilkan luapan karena nilai yang ditetapkan padanya jatuh dalam rentang untuk Long. Nilai Long ditetapkan ke variabel Decimal.

Deklarasi untuk bigDec2 menghasilkan kesalahan luapan karena nilai yang ditetapkan ke dalamnya terlalu besar untuk Long. Karena harfiah numerik tidak dapat ditafsirkan terlebih dahulu sebagai Long, itu tidak dapat ditetapkan ke variabel Decimal.

Untuk bigDec3, karakter jenis harfiah D memecahkan masalah dengan memaksa kompiler untuk menafsirkan harfiah sebagai Decimal alih-alih sebagai Long.

Lihat juga