Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Decimalkayan 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,Decimalsayıların bellekte kayan nokta türlerine (SingleveDouble) göre daha kesin bir gösterimi vardır.Performans. Veri
Decimaltü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.
Decimalveri türü,Singlehatasıyla karşılaşmadanDoubleveya System.OverflowException dönüştürülebilir. Ancak bu dönüştürme,ve duyarlık korumaya göre daha büyük değerlere öncelik duyarlı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
Decimaldepolamaz. Ancak, birDecimaldeğ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ı
MsgBoxaşağıdaki gibidir:d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4Karakter yazın. Değişmez değer türü karakterinin
Ddeğişmez değere eklenmesi, bunu veri türüneDecimalzorlar. Tanımlayıcı türü karakterinin@herhangi bir tanımlayıcıya eklenmesi bunu olarakDecimalzorlar.Ç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.