Bazı
programlama dillerinde değişkenlerin kullanımı veri tiplerine bağlı
olmayabilir. Basic dili böyle idi. Bazı dillerde ise türlerin tanımlanması ve
doğru karar verilmiş olması gerekir. Bir türün diğer bir türe dönüştürülmesi
bizzat programcı tarafından açık olarak yapılmalıdır. Bu yüzden, Basic
programlama dilinde veri tipleri üzerindeki kontrollerin artması en önemli gelişmelerden
birisi olmuştur.
Programcılarının
değişkenler için veri tiplerini seçmesi gerekir. Tamsayı olmayan sayılar için
C# programlama dili floating point ve decimal olmak üzere iki ayrı alternatif
sunar. Decimal veri tipi diğer dillerde olmayan farklı bir veri tipidir.
Gerçek sayılar
için decimal veya floating point türünde değişken kullanmamız gerekir. Bilimsel
veya mühendislik uygulamaları için tanımlanacak değişkenler için floating point
veri tipi kullanılır. Floating point veri tipi çok büyük ve çok küçük sayılar
için kullanılır. Bazı durumlarda, floating point türü kullanıldığında çok küçük
hatalı sonuçlar oluşabilir. Decimal veri tipi kesin sonuçlar verdiği için
floating point kadar esnek değildir.
Decimal veri
tipi, System.Desimal sınıfından türetilir. Kullanımı:
decimal
cebimdekiPara;
Eğer cebinizde
bozuk para yok ise decimal tipinde değişken kullanabilirsiniz.
cebimdekiPara =
70;
E?er bozuk
paranız da varsa, şu şekilde kullanmak isterseniz:
cebimdekiPara =
70.25; //Problem olabilir.
Karışıklığa
mahal vermemek için sonuna M veya m eklemeniz gerekir.
cebimdekiPara =
70.25m; //Düzgün çalışacaktır
Aşağıdaki
programı inceleyelim.
//--------------------------------------------------
//biletHesabi.cs
//--------------------------------------------------
using System;
class
biletHesabi
{
static void Main()
{
const decimal yuksekFiyat = 12.50m, dusukFiyat = 8.25m;
Console.Write(""Pahaly bilet fiyatını giriniz: "");
int pahaliBiletSayisi = Int32.Parse(Console.ReadLine());
Console.Write(""Ucuz bilet fiyatını giriniz: "");
int ucuzBiletSayisi = Int32.Parse(Console.ReadLine());
decimal toplamFiyat = pahaliBiletSayisi * yuksekFiyat + ucuzBiletSayisi *
dusukFiyat;
Console.WriteLine(""Toplam fiyat:"" + toplamFiyat +
"" YTL"");
}
}
Gördüğünüz
gibi, decimal sayıları ve tamsayıları aynı ifade içinde kullanabiliyoruz. C# herhangi
bir tamsayı değişkeni decimal türüne çevirebilir. Decimal değerler ve tamsayı
değerler arasındaki hesaplama sonucu decimal değerdir. Fakat C#, decimal
tipleri tamsayı tipine dönüştürmez.
decimal
toplamPara = 54.25m;
int para =
toplamPara; //Derleme Hatası
C# derleyicisi
bu şekildeki çevirmeyi önlemektedir. Decimal veri tipinden tamsayı veri tipine
çevirmede kayıp oluşabilir.
casting işlemi
yaparak decimal tipte bir sayıyı kayıplarla birlikte tamsayı türüne dönüştürmek
mümkündür.
int para =
(int)toplamPara;
Bir bilme işlemin
sonucunun decimal olabilmesi için işlem yapılacak sayılardan en az birisinin
decimal olması gerekir, ya da decimal türüne dönüştürülmesi gerekir.
int a = 25, b =
10;
decimal c =
a/b; //sonuc 2 çykacaktyr.
Çünkü bir tamsayının
diğer bir tamsayıya bölünmesi sonucu bölüm yine bir tamsayıdır. İşleme giren sayılardan
birisini açık dönüştürme ile decimal sayıya dönüştürelim.
int a =
25, b = 10;
decimal c =
(decimal) a/b; //sonuc 2.5
Çıkan sonucu
yuvarlamak isteyebiliriz. Bunu da kaç basamak yuvarlayacağımızı belirterek
yapabiliriz.
decimal x =
25.77m;
decimal y =
.05m;
decimal sonuc =
x * y; // sonuc 1.2885
decimal
yuvarlanmis = decimal.Round(sonuc, 2); //yuvarlanmis = 1.29 olur.
"