Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Casteo de variable convertidor

En el siguiente codigo en el cual trato de utilizar dos tipos de variables , float como double (para tener un poco mas de entendimiento sobre el casteo), pero segun lo que lei en el libro de java(Fundamentos de Java de Herbert Schildt) y lo que entendi la unica diferencia entre un float y un double son los bits, 32 y 64 respectivamente. Teniendo esto en cuenta no deberia haber un problema al tratar de realizar operaciones entre ellos pero no es el caso. Hay una incrogruencia que me impide utilizar el convertidor como un float y al usar este como float debo castear celsius a float, siendo que este ya es un float. Hay algo que no estoy teniendo en cuenta por eso me pide el casteo de un dato que ya esta en lo solicitado ?

import java.util.Scanner;

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

        Scanner read = new Scanner(System.in);
        System.out.println("Convertidor de Celsius a Farenheit:");
        System.out.println("Porfavor Ingrese el Valor:");
        float celsius =read.nextFloat();
        double convertidor = (celsius*1.8)+32 ;
        System.out.println("Los grados Celsius inicial = " + celsius);
        System.out.println("Los grados convetidos a Farenheit " + convertidor);

    }
    }
1 respuesta
solución!

Hola Cesar, espero que estés bien

Sugerencia: compartir tu proyecto en el canal #comparta-tu-codigo en el servidor ONE en Discord ;)

Entiendo tu confusión con el tema del casteo entre float y double. En Java, aunque float y double son tipos de datos para representar números con decimales, tienen diferencias en cuanto a precisión debido al número de bits que utilizan. Un float utiliza 32 bits, mientras que un double utiliza 64 bits, lo que le permite almacenar números con mayor precisión.

En tu código, estás utilizando una variable float para celsius y una double para convertidor. La operación (celsius * 1.8) + 32 involucra un float y un double (ya que 1.8 es considerado un double por defecto). Java automáticamente convierte el float a double para realizar la operación, ya que double tiene mayor precisión.

Sin embargo, si quisieras mantener todo en float, podrías hacer lo siguiente:

float convertidor = (celsius * 1.8f) + 32f;

Aquí, al agregar la f después de los números, estás especificando que son float en lugar de double. De esta manera, toda la operación se realiza en float, y no necesitarías hacer un casteo adicional.

Espero que esta explicación te ayude a entender por qué ocurre el casteo y cómo puedes manejarlo. ¡Espero haber ayudado y buenos estudios!