یکی از جنبههای کلیدی کار با اعداد در C#، تمایز میان اعداد صحیح (اعدادی بدون هیچ رقم پس از جداکنندهی اعشار) و اعداد اعشاری (اعدادی با صفر یا چند رقم پس از جداکنندهی اعشار) است.
دو نوع عددی پرکاربرد در C#، int (یک عدد صحیح ۳۲ بیتی) و double (یک عدد اعشاری ۶۴ بیتی) هستند.
int i = 123;
double d = 54.29;
هم اعداد صحیح و هم اعداد اعشاری میتوانند از نویسهی _ به عنوان جداکنندهی رقم استفاده کنند، که هنگام تعریف اعداد بزرگ میتواند کمککننده باشد:
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
محاسبات با استفاده از عملگرهای حسابی استاندارد (+، -، * و غیره) انجام میشود. میتوان اعداد را با استفاده از عملگرهای مقایسه استاندارد (<، >= و غیره) و عملگر برابری (==) و عملگر نابرابری (!=) مقایسه کرد.
5 * 6;
// => 30
1.2 > 0.8
// => true
2 != 4
// => true
هنگام تبدیل بین انواع عددی، دو نوع تبدیل عددی وجود دارد:
از آنجا که int دقت کمتری نسبت به double دارد، تبدیل از int به double ایمن است و بنابراین یک تبدیل ضمنی به شمار میرود. با این حال، تبدیل از double به int ممکن است به از دست رفتن داده منجر شود، بنابراین به تبدیل صریح نیاز دارد.
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;