Aracılığıyla paylaş


Onluk Veri Türü (Visual Basic)

10 değişken gücüyle ölçeklendirilmiş 96 bit (12 bayt) tamsayı sayılarını temsil eden imzalı 128 bit (16 bayt) değerleri tutar. Ölçeklendirme faktörü, ondalık noktasının sağındaki basamak sayısını belirtir; 0 ile 28 arasında değişir. 0 ölçeğiyle (ondalık basamak yok), mümkün olan en büyük değer +/-79.228.162.514.264.337.593,5'tir 43.950.335 (+/-7.9228162514264337593543950335E+28). 28 ondalık basamakla en büyük değer +/-7,9228162514264337593543950335'tir ve sıfır olmayan en küçük değer +/-0,000000000000000000000000000001 (+/-1E-28) olur.

Açıklamalar

Veri Decimal türü, bir sayı için en fazla sayıda anlamlı basamak sağlar. En fazla 29 anlamlı basamağı destekler ve 7,9228 x 10^28'i aşan değerleri temsil edebilir. Özellikle çok sayıda basamak gerektiren ancak yuvarlama hatalarını tolere edemeyen finansal hesaplamalar için uygundur.

varsayılan değeri Decimal 0'dır.

Programlama İpuçları

  • Kesinlik. Decimal kayan nokta veri türü değildir. Yapı Decimal , bir ikili tamsayı değerinin yanında bir işaret biti ve değerin hangi bölümünün ondalık kesir olduğunu belirten bir tamsayı ölçeklendirme faktörü içerir. Bu nedenle, Decimal sayıların bellekte kayan nokta türlerine (Single ve Double) göre daha kesin bir gösterimi vardır.

  • Performans. Veri Decimal türü, tüm sayısal türlerin en yavaşıdır. Bir veri türü seçmeden önce duyarlık önemini performansa göre tartmalısınız.

  • Genişletme. Decimal veri türü, System.OverflowException hatasıyla karşılaşmadan Single veya Double dönüştürülebilir. Ancak bu dönüştürme, ve duyarlık korumaya göre daha büyük değerlere öncelikduyarlık kaybına neden olabilir.

Dim decimalValue As Decimal = 1234567890123456789012345D
Dim doubleValue As Double = CDbl(decimalValue)

Console.WriteLine("Decimal value: " & decimalValue)
Console.WriteLine("Double value: " & doubleValue)

Yukarıdaki örneğin çıktısı, Ondalık değerinin tam duyarlığı koruduğunu gösterirken, Double değeriDouble veri türünün sınırlamaları nedeniyle duyarlığı kaybeder.

 Decimal value: 1234567890123456789012345
 Double value: 1.23456789012346E+24
  • Sondaki Sıfırlar. Visual Basic, sondaki sıfırları değişmez değerde Decimal depolamaz. Ancak, bir Decimal değişken hesaplama yoluyla alınan sondaki sıfırları korur. Aşağıdaki örnek bunu göstermektedir.

    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))
    

    Yukarıdaki örnekteki çıktısı MsgBox aşağıdaki gibidir:

    d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
    
  • Karakter yazın. Değişmez değer türü karakterinin D değişmez değere eklenmesi, bunu veri türüne Decimal zorlar. Tanımlayıcı türü karakterinin @ herhangi bir tanımlayıcıya eklenmesi bunu olarak Decimalzorlar.

  • Çerçeve Türü. .NET Framework'te karşılık gelen tür yapısıdır System.Decimal .

Aralık

Bir değişkene veya sabite büyük bir değer D atamak için tür karakterini kullanmanız Decimal gerekebilir. Bu gereksinim, derleyicinin değişmez değeri, aşağıdaki örnekte gösterildiği gibi değişmez değer türü karakterini takip etmediği sürece olarak Long yorumlamasıdır.

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

için bildirimi bigDec1 , kendisine atanan değer için Longaralığın içinde olduğundan taşma üretmez. Long Değer değişkenine Decimal atanabilir.

için bildirimi bigDec2 , kendisine atanan değer için Longçok büyük olduğundan taşma hatası oluşturur. Sayısal değişmez değer ilk olarak olarak Longyorumlanamadığından değişkenine Decimal atanamaz.

için bigDec3değişmez değer türü karakteri D , derleyiciyi değişmez değeri yerine olarak DecimalLongyorumlamaya zorlayarak sorunu çözer.

Ayrıca bkz.