Uno de los aspectos clave de trabajar con números en Java es la distinción entre los enteros (números sin dígitos después del separador decimal) y los números de punto flotante (números con cero o más dígitos después del separador decimal).
Java tiene otros tipos de datos además de int y double:
// 8-Bit Integer
byte a = 127;
// 16-Bit Integer
short b = 262143;
// 64-Bit Integer
long d = 18446744073709551999L;
// 32-bit Single-Precision Floating-Point
float e = 5409.29f;
Tanto los enteros como los números de punto flotante pueden usar el carácter _ como separador de dígitos, lo que puede ayudar cuando defines números grandes:
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
La aritmética se hace con los operadores aritméticos estándar (+, -, *, etc.).
Los números se pueden comparar con los operadores de comparación estándar (<, >=, etc.), junto con el operador de igualdad (==) y el operador de desigualdad (!=).
5 * 6
// => 30
1.2 > 0.8
// => true
120 == 100
// => false
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 eso es una conversión implícita.
Sin embargo, convertir de un double a un int podría significar perder datos, así que eso requiere una conversión explícita.
int i = 9;
double d = 2.72;
// Safe conversion, thus implicit conversion
double fromInt = i;
// Potentially unsafe conversion, thus explicit conversion
int fromDouble = (int)d;