Sayılar genel olarak iki türe ayrılabilir: Tamsayı türü ve ondalıklı sayı türleri.
Tamsayı türü sayılar, ondalık olmayan tam sayılardır. Negatif veya pozitif sayılar olabilir.
Ondalıklı sayılar, bir veya daha fazla ondalık değer içeren sayılardır. Negatif veya pozitif sayılar olabilir.
C#, bellekteki boyutlarına ve sayıları saklama kapasitelerine göre tamsayı türleri ve ondalıklı türleri kullanmak için farklı veri türleri içerir.
Aşağıdaki şekil, C#’daki sayısal türleri göstermektedir.

C# Tam Sayılar
Integer sayılar, ondalık sayılar dışındaki tüm negatif ve pozitif sayılar olabilir. C#’da dört veri türünü desteklenmektedir. Bunlar: byte, short, int ve long.
C# byte Kullanımı
byte veri türü 0 ile 255 arasındaki sayıları tutabilir. Hafızada 8 bit yer işgal eder. .NET’teki Byte yapısının diğer adıdır.
sbyte, byte ile aynıdır, ancak -128 ile 127 arasındaki negatif sayıları saklayabilir. sbyte anahtar sözcüğü, .NET’te SByte yapısı için bir diğer addır.
C# byte Örnekleri
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Program { static void Main(string[] args) { byte b1 = 255; byte b2 = -128;// Derleme hatası verir: Constant value '-128' cannot be converted to a 'byte' sbyte sb1 = -128; sbyte sb2 = 127; Console.WriteLine(Byte.MaxValue);//255 Console.WriteLine(Byte.MinValue);//0 Console.WriteLine(SByte.MaxValue);//127 Console.WriteLine(SByte.MinValue);//-128 Console.ReadKey(); } } |
C# short Kullanımı
short sayı türü -32,768 ile 32,767 arasındaki sayıları tutan işaretli tam sayı türüdür. Hafızada 16-bit yer işgal eder. .NET’de Int16 yapısının takma adıdır.
ushort veri türü işaretli olmayan tam sayı türüdür. 0 ile 65,535 arasındaki sayıları tutar. .NET’de UInt16 yapısının takma adıdır.
C# short Örnekleri
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Program { static void Main(string[] args) { short s1 = -32768; short s2 = 32767; short s3 = 35000;//Derleme hatası: Constant value '35000' cannot be converted to a 'short' ushort us1 = 65535; ushort us2 = -32000; //Derleme hatası: Constant value '-32000' cannot be converted to a 'ushort' Console.WriteLine(Int16.MaxValue);//32767 Console.WriteLine(Int16.MinValue);//-32768 Console.WriteLine(UInt16.MaxValue);//65535 Console.WriteLine(UInt16.MinValue);//0 Console.ReadKey(); } } |
C# int Kullanımı
int veri türü 32-bit işaretli tam sayı türüdür. -2,147,483,648 ile 2,147,483,647 arasındaki tüm sayıları tutabilir. .NET’de Int32 yapısının takma adıdır.
uint 32-bit işaretsiz tam sayı türüdür. 0 ile 4,294,967,295 arasındaki sayıları tutabilir. UInt32 yapısının takma adıdır.
C# int Örnekleri
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class Program { static void Main(string[] args) { nt i = -2147483648; int j = 2147483647; int a = 253_125_147; int k = 4294967295; //Derleme hatası: Cannot implicitly convert type 'uint' to 'int'. uint ui1 = 4294967295; uint ui2 = -1; //Derleme hatası: Constant value '-1' cannot be converted to a 'uint' Console.WriteLine(Int32.MaxValue);//2147483647 Console.WriteLine(Int32.MinValue);//-2147483648 Console.WriteLine(UInt32.MaxValue);//4294967295 Console.WriteLine(UInt32.MinValue);//0 Console.ReadKey(); } } |
int veri türü hexdecimal ve binary sayıları da desteklemektedir. Bir hexadecimal(on altılık) 0x yada 0X ön eki ile kullanılır. Binary (ikilik) sayılar ise 0b ve 0B ön eki ile kullanılır.
1 2 3 4 5 6 7 | int hex = 0x2F; int binary = 0b_0010_1111; Console.WriteLine(hex); Console.WriteLine(binary); |
C# long Kullanımı
long veri türü 64-bit işaretli tam sayı türünü ifade eder. -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındaki sayıları tutar. l ve L son eki ile değer aktarılabilir. long anahtar sözcüğü Int64 yapısının takma adıdır.
ulong veri türü 0 ile 18,446,744,073,709,551,615 arasındaki pozitif tam sayıları kaydeder. Bir sayının son eki UL, Ul, uL, ul, LU, Lu, lU veya lu ise, türü ulong’dur. uint anahtar sözcüğü, .NET’teki UInt64 yapısının bir diğer adıdır.
C# logn Örnekleri
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Program { static void Main(string[] args) { long l1 = -9223372036854775808; long l2 = 9223372036854775807; long l3 = 11_125_254_452_147_147L; ulong ul1 = 18223372036854775808ul; ulong ul2 = 18223372036854775808UL; Console.WriteLine(Int64.MaxValue);//9223372036854775807 Console.WriteLine(Int64.MinValue);//-9223372036854775808 Console.WriteLine(UInt64.MaxValue);//18446744073709551615 Console.WriteLine(UInt64.MinValue);//0 Console.ReadKey(); } } |
Ondalıklı Sayılar
Ondalıklı sayılar bir yada daha fazla ondalık değere sahip pozitif ve negatif sayılar olabilir. C#’da 3 tip ondalık sayı bulunmaktadır. Bunlar float, double ve decimal türlerdir.
C# float Kullanımı
float veri türü 3.4e−038 ile 3.4e+038 arasındaki kesirli sayıları saklayabilir. Hafızada 4 byte yer işgal eder. float ifadesi Single yapısının takma adıdır.
Bir sayıyı float yapmak sayının sonuna f yada F koymak gerekir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Program { static void Main(string[] args) { float f1 = 123456.5F; float f2 = 1.123456f; Console.WriteLine(f1);//123456.5 Console.WriteLine(f2);//1.123456 Console.ReadKey(); } } |
C# double Kullanımı
double veri türü 1.7e−308 ile 1.7e+308 arasındaki kesirli sayıları saklamak için kullanılır. Hafızada 8 byte yer kaplar. double ifadesi Double yapısının takma adıdır.
Bir sayıyı double yapmak için sayının sonuna d yada D harfi kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Program { static void Main(string[] args) { double d1 = 12345678912345.5d; double d2 = 1.123456789123456d; Console.WriteLine(d1);//12345678912345.5 Console.WriteLine(d2);//1.123456789123456 Console.ReadKey(); } } |
C# decimal Kullanımı
deicmal veri türü ±1.0 x 10-28 ile ±7.9228 x 1028 arasındaki kesirli sayıları saklamak için kullanılır. Hafızada 16 byte yer kaplar. decimal ifadesi Decimal yapısının takma adıdır.
Decimal türü, hem float hem de double’dan daha hassas ve daha küçük bir aralığa sahiptir ve bu nedenle finansal ve parasal hesaplamalar için uygundur.
Ondalık tür yapmak için tam olarak m veya M son ekini kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Program { static void Main(string[] args) { decimal d1 = 123456789123456789123456789.5m; decimal d2 = 1.1234567891345679123456789123m; Console.WriteLine(d1); Console.WriteLine(d2); Console.ReadKey(); } } |
Bilimsel gösterim
float, double ve decimal sayılarda 10 luk kuvvet gösteri için e yada E sembolünü kullanbilirsiniz.
1 2 3 4 5 6 7 8 9 10 | double d = 0.12e2; Console.WriteLine(d); // 12; float f = 123.45e-2f; Console.WriteLine(f); // 1.2345 decimal m = 1.2e6m; Console.WriteLine(m);// 1200000 |