No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a Java SE

Curso de Introducción a Java SE

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Cast en variables: Estimación y Exactitud

18/39
Recursos

En la programación hay situaciones donde necesitamos cambiar el tipo de dato de nuestras variables, esto lo conocemos como Cast.

Estimación:

double monthlyDogs = dogsQuantity / 12.0;
// monthlyDogs: 2.5 (pero no es posible, ¡no rescatamos medio perrito!)

int estimatedMonthlyDogs = (int) monthlyDogs;
// estimatedMonthlyDogs: 2

// Recuerda que el casteo no redondea, solo quita los decimales:
Math.sqrt(3) // 1.7320508075688772
(int) Math.sqrt(3) // 1

Exactitud:

int a = 30;
int b = 12;

a / b // 2
(double) a / b // 2.5

Aportes 75

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

cuando conviertes un dato (doublé) en un dato (int) cada 2 meses un perrito se pierde en el limbo, jajaja

Overflow y Underflow
Algo muy importante a considerar al realizar un casting entre variables es que puede alterarse el valor de la misma si excede el máximo o mínimo soportado por el tipo de dato a convertir.
Por ejemplo:

short y = (short)1921222; //Almacena 20678

El valor 1921222 es demasiado grande para almacenarse como un short, por lo que se produce un desbordamiento (overflow) numérico y se convierte en 20678.
El overflow es cuando un numero es tan grande que ya no cabe dentro del tipo de dato, por lo que Java lo ajusta al siguiente valor mas bajo y cuenta desde allí.

El lado cruel de java, “un perrito se partió a la mitad”.

CONVERSIONES ENTRE TIPOS

  • NO PERDEMOS INFORMACIÓN
    • De char —> int.
    • De byte —> short —> int —> long
    • De int —> double
    • De float —> double
  • PERDEMOS INFORMACIÓN
    • De int —> float
    • De long —> float
    • De long —> double

El casting no aproxima o redondea, solo ignora algunos números para tener el valor estimado, en caso de cambiar a tipo int.

Gracias a la primera mitad del curso, he sido el que ha sacado mayor nota en el examen de mi u xD. Gracias Platzi

Te comparto este artículo con más ejemplos de casting en Java. 💚




// casteo de Variables
    // cambio de double a entero, elimina la parte decimal del numero
    double d = 86.69;
    int i = (int) d;
    System.out.println("EL VALOR DE D ES : "+ d);
    System.out.println("EL VALOR DE I ES : "+ i);

    //Ubicar 30 perritos al año, deseo saber cuantos perritos ubiqué al mes

    double monthlyDogs = 30/12;
    int estimatedMonthlyDogs = (int ) monthlyDogs;
    System.out.println("EL NUMERO ESTIMADO DE PERRITOS  UBICADOS ES "+estimatedMonthlyDogs);

    // Exactitud
    int a = 30;
    int b = 12;
    System.out.println("EL NUMERO EXACTO DE PERRTIOS AL MES ES: "+((double) (a/b)));

Programar Java en VSC es exquisito, asiste demasiado bien como Typescript

Super!!

ideal para examen donde se den enteros y pedir resultados con decimales

El casting es un procedimiento para transformar una variable primitiva de un tipo a otro, o transformar un objeto de una clase a otra clase siempre y cuando haya una relación de herencia entre ambas

Porque la virtual machine asume que la division de dos enteros que generan un double y lo almacena en una variable double lo guarda entero. No deberia respetar el resultado porque se esta almacenando en una variable double.

😮 Nos podemos encontrar con casting implícitos y explícitos para manipular datos.

Genial 😄

Interesante a la hora de hacer calculo

public class Casting {
    public static void main(String[] args) {
        //En un año ubico 30 perritos, ¿Cuántos perritos al mes?

        double monthlyDogs = (30.0 / 12.0);
        System.out.println("El numero de perritos mensuales es: "+monthlyDogs);

        //Estimación
        int estimatedMonthlyDogs = (int) monthlyDogs;
        System.out.println("La estimancion de perritos rescatados mensualmente es: "+estimatedMonthlyDogs);

        //Exactitud
        int a = 30, b = 12;
        System.out.println("Exactitud de perritos mensuales: "+(a/b));
    }
}

la verdadera pregunta es, con java podremos saber a donde fue ubicado esa mitad de perrito? jajajaj

Este sería mi código de la clase:

Como siempre mi código al final de cada clase, ahora empece a agregar comentarios en el print para darme una mejor idea de lo que estoy haciendo, además cambié los perros por gatos hahaha:

Es igual a lo que en JavaScript se conoce como Coersion Explicita. Alguien ilumineme si estoy mal.

Para eñ casteo de tipo explicito que es el de la clase solo se puede lograr cuando el tipo de dato destino tenga un rango de valores mas pequeño o igual que el tipo de dato origen, ejemplo:

Para el casteo de datos numericos existe un casteo implicito que no requiere de codigo extra, solo asignarlo. Aqupi una tabla de ese tipo de casteo implicito

wao es muy buen explicando me encanta la clase de java xd

  • Cast casteo o casting de variable.
  • En la programación hay situaciones donde se necesita cambiar el tipo de dato. A veces nosotros quisieramos dejar de ver ese número en decimal que tal que queremos verlo ahora en otro tipo de dato que tal que queremos en un tipo de dato más redondeado como un entero por ejemplo, entones esto depende de que prefiramos, si preferimos Estimación, estimar algo que no nos importe la cantidad de decimales que hay ahí, sino que simplemente queremos el dato estimado; o si preferimos Exactitud en este caso nos convendría cambiar un tipo de datos entero a un tipo de dato que sea de tipo double para hacerlo mucho más sencillo.

Corazon si amas los perritus fiu fiu

Yo lo que entiendo, es que la parte decimal se mantiene en memoria hasta que se cierra el programa que se esta codificando.
Aunque a mi si me gusta mas tener algo exacto que algo estimado.

Visto en clase

El cast es un cambio de tipo de variable. Se aplica usando paréntesis al nuevo tipo de dato seguido de la variable a modificar.

__ Cast de variables__ 🧮️
Se le conoce como cast cuando necesitas cambiar el tipo de variable a otro tipo de dato . Un cast lo puedes identificar de la siguiente manera:

double d = 86.5;
int i = (int) d; // Cast de double a entero  da estimación
int j = (double) i; // Cast de entero a double da exactitud

diablos solo me quedo la cabeza del perro jajaja

public class Casting {
    public static void main(String[] args) {
     
        // En un ano ubicar a 30 perritos
        // Cuantos perritos ubique al mes

        double monthyDog = (30.0 / 2.0);

        // Estimacion
        int estimaredMonthyDogs = (int) monthyDog;
        System.out.println(estimaredMonthyDogs);

        // Explicacion: Cuando queremos tener un numero entero con estimacion teniendo decimales 
        // Es recomendable utilizar el int para casterar el valor, para tener un valor exacto
        // Ejemplo de casting
        // Con double: double numero = 1.23232323232;
        // Con casting: int numero_two = (int) numero;
        // Resultado: 1
        // NO redondea numeros, sino que quita los puntos decimales para dejar el numero con estimacion


        // Exactitud
        int a = 30;
        int b = 12;

        System.out.println((double) a/b);

        // Si queremos saber el valor exacto de una poneracion es recomendable utilizar double para 
        // obtener resultado con decimales

    }
}

Excelente curso

¿Solo quita los puntos decimales?

Es usual el uso de cast en las variables?

Excelente curso! otro tema más que la U no me enseñó jajaja

Chevere!!! Es la mejor…

Wow esto es loco 🥴

Sabia convertir el tipo de dato, pero no sabia que se llamaba Casting. En verdad se aprende mucho con la profe Anahí.

codigo de la clase

<   double cantPlayMonth= 35.0/12.0;
        System.out.println(cantPlayMonth);
        System.out.println((int) cantPlayMonth);
        //Exacto
        int x=40;
        int y= 7;
        System.out.println((double) x/y);>

El cast al ocuparlo adecuadamente visualiza mejor ciertos resultados.

jajajajajaaja se parte el perrito

y por qui van los perritos XD
//En un año me dedique a ubicar 30perritos a su hogar
//cuantos perritos ubique al mes

   double monthlyDogs = 30.0/12.0;
   System.out.println(monthlyDogs);

   //ESTIMACION
    int estimatedMonthlyDogs = (int) monthlyDogs;
    System.out.println(estimatedMonthlyDogs);


    // Exactitud
    int a = 30;
    int b = 12;

    System.out.println((double) a/b);
}

JAVA SE: Cast en variables: Estimación y Exactitud

Super gracias 😃

Lo que hacemos con monthlyDogs (que es del tipo double) es castearlo en entero (truncando la parte decimal) y una vez hecho esto lo asignamos a la variable estimateMonthlyDogs

Cuando tienes un tipo de dato y lo quieres convertir a otro, de double a int o int a short
int newVar = (int)2.00034;

También puedo hacer esto:
System.out.println((int)monthlyDogs);

es mejor crear una variable con double ? cuales son las recomendaciones

public class Casting {
public static void main(String[] args) {
double monthlyDogs = 30.0/12.0;
System.out.println(monthlyDogs);
int estimatedMonthlyDogs = (int) monthlyDogs;
System.out.println(estimatedMonthlyDogs);
}
}

Muy buena clase sobre el casting, es muy util a la hora de la precisión y cuando requieres algún dato mas entero

Muy buena clase, no tenía idea del casting y lo sencillo que es aplicarlo.

Excelente curso

muy útil del casting

Genial, no lo sabia.

Excelente clase no conocía el casting en Java, lo que normalmente hacía para obtener los resultados enteros cuando se usaban decimales era utilizar Math.round(), con el casting no solo podre tener un valor con una mejor estimación si no que también cambiare el tipo variable.

me parece genial 😃

![](

Muy útil el casteo.

Notes:
Code:

import java.lang.*;

/**
 * CastingVars
 */
public class CastingVars {

    public static void main(String[] args) {
        //I relocated 30 dogs in a year
        //how many dogs did I relocate per month?
        //answer: 30/12

        System.out.printf("\n----Without-Precision-Example----\n\n");
        double monthlyDogs = 30.0/12.0;
        System.out.println(monthlyDogs);
        //out: 2.5

        //but since I don't care about precision, I want to have it rounded
        int estimatedMonthlyDogs = (int) monthlyDogs; //casting variables ;)
        System.out.println(estimatedMonthlyDogs);

        //other example
        System.out.println((int) monthlyDogs);

        //exactitude example
        System.out.printf("-----Precision-Example-----\n\n");

        int a = 30;
        int b = 12;

        System.out.println((double) a/b);
    }
}

Output:


----Without-Precision-Example----

2.5
2
2
-----Precision-Example-----

2.5
public class Casting
{
    public static void main(String[] args)
    {
        //en un año ibique a 30 perros
        // cuantos perritos fueron al mes
        double dogs  = 30.0/12.0;
        System.out.println(dogs);

        //estimacion
        int estimatedDogs = (int)dogs; //redondea hacia abajo
        System.out.println("dato casteable redondeo: " + estimatedDogs);

        //exactitud
        int a =30;
        int b =12;
        System.out.println(a/b); // al ser numeros enteros devuelve un valor entero
        System.out.println("dato casteable-exactitud: " + (double) a/b); //castea a un numero entero a un numero en decimales

    }

}

Todo clarísimo. Gracias

public class Casting {
    public static void main(String[] args) {

        double lapizes = 2.5;
        System.out.println(lapizes);

        lapizes = (int) lapizes;
        System.out.println(lapizes);

    }
}

q interesante esto del casting we :v

Pésima publicidad para la organización. Claramente usaría Math.ceil(monthlyDogs);

Así parece que salvé a 6 perros más

Lo bueno de hacer cast en variables es que nos quedamos con el dato original y si estamos analizando las variables (por ejemplo para elaborar gráficos y ver el proceso) la información no se pierde. Para un usuario común al que no le interesa saber los decimales le creamos otra variable. Es decir, tenemos una variable útil y una “más linda”

Es una buena estrategia para convertir los tipos de datos, no sabía que se le conocía como Casting!

Cast es cuando asigna un valor de un tipo de datos primitivo a otro tipo.

genial

El lado oscuro de java… PARTIR PERRITOS

public class Casting {
    public static void main(String[] args) {
        //en un año se ubican 30 perritos
        //cuantos pertritos se ubicaron por mes?

        double monthlyDogs = 30.0 / 12.0;
        System.out.println(monthlyDogs);

        //estimacion
        int estimatedMonthlyDogs = (int) monthlyDogs;
        System.out.println(estimatedMonthlyDogs);

        //exactitud
        int a = 30;
        int b = 12;
        // en este caso se realiza el cast de int a double para tener una mayor precision.
        System.out.println((double) a/b);

    }
}```