CIAO A TUTTI!
Non riesco a capire il casting ... mi spiego meglio con un esempio.
int a =5;
int b =3;
double r1 = (double) a/b; //Casting di r1
System.out.println("R1 casting da Int a Double = " +r1);
float r1bis = (float) r1;
System.out.println("R1 casting da Double a Float = " + r1bis + " perdita dati");
Nell'esempio riportato sopra, forzo in una variabile double a/b per non perdere i valori decimali, della divisione.
Riforzo di nuovo, trasformando il valore dell'operazione da un tipo double ad un tipo flot ... CON CONSEGUENTE PERDITA DI DATI(io la chiamerei troncatura, è corretto?).
ECCO IL PROBLEMA ...
credevo che sarebbe accaduta la stessa cosa con l'esempio che riporto qui sotto ...
long tipoLong = Long.MAX_VALUE; // Assegna il valore max contenibile in un tipo long.
int tipoInt;
System.out.println("Il massimo valore che può contenere un tipo long è: " + tipoLong);
//Esegue il cast da Long ad Int.
tipoInt = (int) tipoLong;
System.out.println("tipoLong contiene: " + tipoLong + " tipoint contiene: " + tipoInt);
con mia sorpresa, il valore è -1 perchè? non riesco a capirlo. Io desideravo mantenere lo stesso valore per quel che poteva contenere(il resto troncatura).
COME POSSO FARLO?
CIAO E GRAZIE!