Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Assegnare un valore double ad una variabile int
Forum - Java - Assegnare un valore double ad una variabile int

Avatar
Nophiq (Founder Member)
Expert


Messaggi: 537
Iscritto: 15/11/2004

Segnala al moderatore
Postato alle 15:58
Martedì, 22/02/2005
Come faccio ad assegnare un valore double ad una variabile int?

Per esempio scrivere
int a = double b
il compilatore mi da dei problemi di "possibile perdita di precisione".

Che modifiche devo apportare?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:01
Martedì, 22/02/2005
Per fare quello che chiedi devi fare un cast esplicito, quello che fai tu ? un cast da double a double, quindi un double che ver? assegnato ad un intero, danto l'errore che ti da.
Quando si esegue un cast lo si deve fare castando nel tipo della variabile che assumer? il valore, in questo caso a che ? un int:

int a = (int) b;

ciao :k:

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:04
Martedì, 22/02/2005
ecco un esempio:

class A {
public static void main(String args[]) {
double b = 22.5;
int a = (int)b;
System.out.println(a);
System.out.println(b);
}
}

Come si vede la parte decimale viene troncata brutalmente :k:

ciao

PM Quote
Avatar
Nophiq (Founder Member)
Expert


Messaggi: 537
Iscritto: 15/11/2004

Segnala al moderatore
Postato alle 16:14
Martedì, 22/02/2005
Che cosa ? un "Cast esplicito"?

(scusate la mia ignoranza)

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:23
Martedì, 22/02/2005
Per cast esplicito si intende un cast appunto esplicito, che significa chiaro, in vista, non implicito :)

In altri linguaggi come il C ad esempio, una volta dichiarata una varaibile come int, essa pu? essere utilizzata come un qualsiasi dato, il rischio ? che a run-time ci siano strani risultati se usata male.
In Java, e anche nel C++ ad esempio, per dire che quella varaibile verr? usata in altro modo devi dirlo esplicitamente, direttamente scrivento (tipo_in_cui_convertire) ecc...

Se qual cast fosse implicito,  basterebbe fare:

double a;
int b = a;

ciao

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:45
Martedì, 22/02/2005
<i>Quote: "possibile perdita di precisione"</i>

E' ovvio che perdi precisione passando da un double ad un int :asd:

L'int ha le dimensioni di una Word (2 bytes) mentre una double occupa una QWord (8 bytes), ci sara' un motivo per la quale la double occupa 6 bytes (48 bit) in pi? dell'int? ;)


Il mio blog: https://piero.dev
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:49
Mercoledì, 23/02/2005
In java un int ha 32 bit, quindi occupa 8 bytes. Un double niente pop? di meno che 64 bits. Come un long, solo che il long va da
-9'223'372'036'854'775'808 al suo opposto, un double da 4,9e-324 fino a 1,8e+308(in notazione scientifica sen? ? troppo lungo).

ciao :k:

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:35
Mercoledì, 23/02/2005
:-|

Come sarebbe a dire 32 bits = 8 bytes?


| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | = 1 byte


1 byte = 8 bits
2 bytes = 16 bits
<b>4 bytes = 32 bits</b>
8 bytes = 64 bits



:-|


Il mio blog: https://piero.dev
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 20:56
Giovedì, 24/02/2005
si hai ragione ho diviso per 4 :asd:

PM Quote