Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Convertir entre tipos

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

30 minutos

La media que se perdió

Sacas un 7, un 6 y un 6. Tu media es 6,33. Pero tu programa dice que es un 6.

¿Dónde se fueron los decimales? Se perdieron al mezclar tipos.

Hoy aprendes a pasar un dato de un tipo a otro sin perder nada que importe.

Palabras clave

PalabraQué significaEjemplo
ConversiónPasar un dato de un tipo a otro.de int a double
CastUna conversión que pides tú, con el tipo entre paréntesis.(int) 3.99
RedondearDar el número entero más cercano.Math.round(3.6) da 4
parseIntConvierte un texto en un número entero.Integer.parseInt("12")
parseDoubleConvierte un texto en un número con decimales.Double.parseDouble("2.5")

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

De int a double: Java lo hace solo

Un int cabe siempre dentro de un double. Es como meter una moneda en una caja grande.

Por eso Java convierte de int a double sin que se lo pidas. No pierdes nada: el 5 pasa a ser 5.0.

Pero ojo con las divisiones. Mira el ejemplo.

Pruébalo: de entero a decimal

Código: java
public class Main {
    public static void main(String[] args) {
        int euros = 5;
        double price = euros;
        System.out.println(price);

        // Ojo: 7 / 2 se calcula primero con enteros y da 3.
        double half = 7 / 2;
        System.out.println(half);

        // Con 2.0 la cuenta ya tiene decimales.
        double right = 7 / 2.0;
        System.out.println(right);
    }
}

De double a int: lo pides tú

Al revés es distinto. Un double no cabe en un int sin perder los decimales.

Java no lo hace solo. Tienes que pedirlo con un cast: escribes (int) delante.

Así dices: "sé que pierdo los decimales, hazlo".

(int) corta, no redondea

Advertencia

(int) 3.99 da 3, no 4. Java tira los decimales sin mirarlos. Para el entero más cercano usa Math.round.

Pruébalo: cortar y redondear

Código: java
public class Main {
    public static void main(String[] args) {
        double price = 3.99;

        // El cast corta los decimales.
        int cut = (int) price;
        System.out.println("Cortado: " + cut);

        // Math.round da el entero más cercano.
        int rounded = (int) Math.round(price);
        System.out.println("Redondeado: " + rounded);

        // Prueba con 3.4 y mira la diferencia.
    }
}

Ejemplo resuelto: qué da cada cuenta

CuentaResultadoQué pasa
7 / 23Dos enteros dan un entero.
7 / 2.03.5Un decimal hace decimal la cuenta.
(double) 7 / 23.5El 7 se convierte antes de dividir.
(double) (7 / 2)3.0Primero se divide con enteros: 3.
(int) 3.993El cast corta los decimales.
Math.round(3.99)4El entero más cercano.
Math.round(3.4)33.4 está más cerca de 3.

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Del texto al número y al revés

El texto "12" no es el número 12. No puedes sumar con él.

Para convertirlo usa Integer.parseInt("12"). Para decimales, Double.parseDouble("2.5").

Al revés es fácil: String.valueOf(12) da el texto "12".

Pruébalo: sumar un texto

Código: java
public class Main {
    public static void main(String[] args) {
        String text = "12";
        int number = Integer.parseInt(text);

        // Con textos, + une. Con números, + suma.
        System.out.println(text + text);
        System.out.println(number + number);

        String back = String.valueOf(number + 1);
        System.out.println(back + "!");
    }
}

Un texto que no es un número

Nota

Si escribes Integer.parseInt("doce"), el programa falla. Java no sabe leer "doce". En la lección Cuando algo sale mal verás cómo evitarlo.

Ejemplo resuelto: el IVA a céntimos

PasoCuentaResultado
1. Precio con IVA9.99 * 1.2112.0879
2. Pasar a céntimos12.0879 * 1001208.79
3. RedondearMath.round(1208.79)1209
4. Volver a euros1209 / 100.012.09

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: el precio con IVA

Código: java
public class Main {
    public static void main(String[] args) {
        double price = 9.99;
        double withVat = price * 1.21;

        // Los cuatro pasos de la tabla en una línea.
        double cents = Math.round(withVat * 100) / 100.0;
        System.out.println("Pagas " + cents + " euros.");

        // Cambia el precio a 20 y ejecuta otra vez.
    }
}

La lección continúa

6 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.