Olá!! Sendo o float menor do que o long, essa conversão não deveria ser implícita? Obrigada.
Olá!! Sendo o float menor do que o long, essa conversão não deveria ser implícita? Obrigada.
OIá, Natália
Acredito que isso se deve ao fato do float ser um tipo "ponto flutuante", possuindo valores decimas, desta forma, quando você realiza um processo de typecasting, você assume que não irá precisar de nenhum valor que esteja após a virgula, como no exemplo a seguir:
public class AluraAjudaErica1 {
public static void main(String[] args) {
Long primeiro = 1L;
Float segundo = 2.656165189f;
primeiro = segundo.longValue();
System.out.println("Resultado: " + primeiro);
}
}
o resultado que irá aparecer no console no caso será
Resultado: 2
Agora o double (dobro da capacidade do float), mesmo o float sendo menor que o double, ele ainda sim precisa realizar typecasting, o motivo é deve ser a precisam que é diferente de um para outro. veja um exemplo abaixo:
public class ajuda1 {
public static void main(String[] args) {
Double primeiro = (double) 12;
Float segundo = 2.656165189f;
primeiro = segundo.doubleValue();
System.out.println("Resultado: " + primeiro);
}
}
para saber mais detalhes sobre isso deixei um link nas referências para complementar seus estudos. Espero ter ajudado, não esqueça de marcar como tópico finalizado.
Att,
Referências complementares: https://javarevisited.blogspot.com/2015/09/how-to-convert-float-to-long-in-java.html#axzz7ZLIvcJim