Μια από τις βασικές πτυχές της εργασίας με αριθμούς στη C# είναι η διάκριση ανάμεσα στους ακέραιους (αριθμούς χωρίς ψηφία μετά το δεκαδικό σύμβολο) και τους αριθμούς κινητής υποδιαστολής (αριθμούς με μηδέν ή περισσότερα ψηφία μετά το δεκαδικό σύμβολο).
Οι δύο πιο συχνά χρησιμοποιούμενοι αριθμητικοί τύποι στη C# είναι ο int (ένας ακέραιος 32 bit) και ο double (ένας αριθμός κινητής υποδιαστολής 64 bit).
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;