Tipo destino | |||||||||
---|---|---|---|---|---|---|---|---|---|
boolean | char | byte | short | int | long | float | double | ||
Tipo origen | boolean | - | N | N | N | N | N | N | N |
char | N | - | C | C | Cl | Cl | Cl | Cl | |
byte | N | C | - | CI | Cl | Cl | Cl | Cl | |
short | N | C | C | - | Cl | Cl | Cl | Cl | |
int | N | C | C | C | - | Cl | Cl* | Cl | |
long | N | C | C | C | C | - | Cl* | Cl* | |
float | N | C | C | C | C | C | - | Cl | |
double | N | C | C | C | C | C | C | - |
Explicación de los símbolos utilizados:
N: Conversión no permitida (un boolean
no se puede convertir a ningún otro tipo y viceversa).
CI: Conversión implícita o automática. Un asterisco indica que puede haber posible pérdida de datos.
C: Casting de tipos o conversión explícita.
El asterisco indica que puede haber una posible pérdida de datos, por ejemplo al convertir un número de tipo int
que usa los 32 bits posibles de la representación, a un tipo float
, que también usa 32 bits para la representación, pero 8 de los cuales son para el exponente.
En cualquier caso, las conversiones de números en coma flotante a números enteros siempre necesitarán un Casting, y deberemos tener mucho cuidado debido a la pérdida de precisión que ello supone.
Reglas de Promoción de Tipos de Datos
Cuando en una expresión hay datos o variables de distinto tipo, el compilador realiza la promoción de unos tipos en otros, para obtener como resultado el tipo final de la expresión. Esta promoción de tipos se hace siguiendo unas reglas básicas en base a las cuales se realiza esta promoción de tipos, y resumidamente son las siguientes:
- Si uno de los operandos es de tipo
double
, el otro es convertido adouble
. - En cualquier otro caso:
- Si el uno de los operandos es
float
, el otro se convierte afloat
- Si uno de los operandos es
long
, el otro se convierte along
- Si no se cumple ninguna de las condiciones anteriores, entonces ambos operandos son convertidos al tipo
int
.
- Si el uno de los operandos es
Conversiones de números en Coma flotante (float , double ) a enteros (int ) |
Conversiones entre caracteres (char ) y enteros (int ) |
Conversiones de tipo con cadenas de caracteres (String ) |
---|---|---|
Cuando convertimos números en coma flotante a números enteros, la parte decimal se trunca (redondeo a cero). Si queremos hacer otro tipo de redondeo, podemos utilizar, entre otras, las siguientes funciones:
|
Como un tipo
Ejemplo:
|
Para convertir cadenas de texto a otros tipos de datos se utilizan las siguientes funciones:
Por ejemplo, si hemos leído de teclado un número que está almacenado en una variable de tipo
|