Uno de los aspectos clave al trabajar con números en C# es la distinción entre números enteros (números sin dígitos después del separador decimal) y números de punto flotante (números con cero o más dígitos después del separador decimal).
Los dos tipos numéricos más usados en C# son int (un entero de 32 bits) y double (un número de punto flotante de 64 bits).
int i = 123;
double d = 54.29;
Tanto los números enteros como los de punto flotante pueden usar el carácter _ como separador de dígitos, lo que puede ayudar al definir números grandes:
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
La aritmética se realiza con los operadores aritméticos estándar (+, -, *, etc.). Los números se pueden comparar con los operadores de comparación estándar (<, >=, etc.) y el operador de igualdad (==) y el operador de desigualdad (!=).
5 * 6;
// => 30
1.2 > 0.8
// => true
2 != 4
// => true
Al convertir entre tipos numéricos, hay dos tipos de conversiones numéricas:
Como un int tiene menos precisión que un double, convertir de un int a un double es seguro y por lo tanto es una conversión implícita. Sin embargo, convertir de un double a un int podría significar perder datos, así que requiere una conversión explícita.
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;