A C#-ban a számokkal való munka egyik kulcsfontosságú szempontja az egész számok (amelyekben a tizedeselválasztó után nincs számjegy) és a lebegőpontos számok (amelyekben a tizedeselválasztó után nulla vagy több számjegy áll) megkülönböztetése.
A C#-ban a két leggyakrabban használt numerikus típus az int (32 bites egész szám) és a double (64 bites lebegőpontos szám).
int i = 123;
double d = 54.29;
Az egész és a lebegőpontos számok egyaránt használhatják a _ karaktert számjegy-elválasztóként, ami nagy számok megadásakor segíthet:
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
A számtani műveleteket a szokásos aritmetikai operátorokkal (+, -, * stb.) végezzük. A számokat a szokásos összehasonlító operátorokkal (<, >= stb.), valamint az egyenlőség- (==) és az egyenlőtlenség operátorral (!=) hasonlíthatjuk össze.
5 * 6;
// => 30
1.2 > 0.8
// => true
2 != 4
// => true
Amikor numerikus típusok között váltunk, kétféle numerikus konverzió létezik:
Mivel az int pontossága kisebb, mint a double-é, az int-ből double-ba való átalakítás biztonságos, így implicit konverzió. A double-ból int-be való átalakítás viszont adatvesztéssel járhat, ezért explicit konverziót igényel.
int i = 9;
double d = 2.66;
// Safe conversion, thus implicit conversion
double fromInt = i;
// Potentially unsafe conversion, thus explicit conversion
int fromDouble = (int)d;