![]()
C# dilinde çeşitli veri türleri vardır, ancak virgülden sonra rakamları olan sayılarla çalışıyorsanız ve özellikle küsuratlı fiyatların çok olduğu finansal projelerde çalışıyorsanız Decimal tipini iyi anlamamız gerekmektedir.
Veri tabanınıza özellikle ondalıklı sayıları sağlıklı bir şekilde kaydetmek için kullanılan bir veri türüdür. Bu nedenle, hataların ortaya çıkmasını istemediğiniz finansal ve parasal hesaplamalar için idealdir.
C# ta ondalıklı sayıların varsayılan değeri double‘dır. Eğer Ondalıklı ve Decimal tipli bir değer tanımlamak istediğimizde sayının sonuna M veya m harfini koyarak değerin decimal tipli değişkeni olduğunu belirtmemiz gerekmektedir. Ama tam sayı kullanacaksak sonuna M yada m harfini yazmamıza gerek yoktur.
|
1 2 3 |
decimal tutar= 0.01m; |
Yukarıdaki örnek kodda, ondalık bir değişken olan tutar ‘ a bir değer atandı ve devamındaki ‘m’ çok önemli C# ‘ ta bu ifade ondalık bir değişmez değer olduğunu belirtir.
Decimal çok büyük bir aralıklı ve 28-29 basamağa kadar sayı tutabilir ve 16 bayt yer kaplar. Float 4 bayt , Double 8 bayt yer kaplar.
|
1 2 3 4 |
decimal tutar = 400.23m; Console.WriteLine(“Tutar : “ + tutar); |

Bu kod satırından sonra ‘tutar’ 400.23 değerini saklayacak.
Ondalık sayılar Bankacılık, finans ve Veri Analizi gibi projelerde kullanımı uygundur.
Mesela : Bir banka kar payı yada faizini hesapladığınızı varsayalım; sizin sayısal somut kesin bir veriye ihtiyacınız olacaktır ve bu sizi kendinizden emin kılacaktır. 29 ondalık basamağa kadar olan oranlar ve tutar hesaplamalarını doğru bir şekilde gerçekleştirebilir.
|
1 2 3 4 5 6 7 8 9 |
decimal anaPara = 2000; decimal karPayi= 4.5m; decimal ay = 6; decimal karPayiSonucu= anaPara * (decimal)(Math.Pow((double)(1 + (karPayi/100)), (double)ay) – 1); Console.WriteLine(“Oran : “ + karPayiSonucu); |

kodda Math.Pow() decimal ı desteklemediği için Casting yaptım.
Önemli bir detay da diller yada bölge farklılığında pc de farklı dil, server da farklı dil kullanırken tam sayıları kesirli değerlerden ayırmak için farklı karakterler kullanabilir. Örneğin, bazı bölgelerde ondalık ayırıcı olarak ondalık nokta (.) yerine virgül (,) kullanılır. Bu ayara, Saat ve Bölge ayarlarından ulaşabilirisiniz. Gördüğünüz gibi dili Türkçe olan pc de virgül (,) olan decimal olan pc de nokta (.) olarak ayarlıdır.


Mesela server da bu olay nokta (.) ve kod geliştirmesi yaptığınız yerde virgül (,) olabilir ve siz hesaplamalarınızı Decimal ondalık tanımlayıp öyle hesaplamalar yaptıysanız localde bu hesaplamalar doğru olurken Server de yanlış olacaktır. Böyle bir durumda ortamların aynı dil ve aynı bölge olmasına dikkat edilmelidir.
Decimal i Formatlama
Decimal ondalık bir sayıyı da aşağıdaki gibi formatlı ve istenen bir şekilde gösterilebilir ve . dan sonra istediğiniz basamakta 0 yazarak sayı alabilirisniz
|
1 2 3 4 |
decimal Sayi = 12.72348596755m; Console.WriteLine(String.Format(“{0:0.00}”, Sayi)); // 12.72 |
Not: Büyük ve ondalıklı sayılarla çalışırken hassas hesaplamalı işlerde float yada double tiplerdeki hesaplamalar da hatalı sonuç almanıza neden olabilir.
Olumsuz yönü : Decimal ondalıklı ve hassas hesaplamalar için ayarlanmış olsa da, daha fazla kaynak tüketir ve Bellekte daha fazla yer kaplar ve ondalık sayılardaki işlemler daha yavaştır
Detayları bilmek ve yerli yerince kullanmak iyi bir programcı olma yolunda farkındalığınız olacaktır.
Sağlıcakla kalın..








Bir yanıt yazın