Oppure

Loading
22/02/05 14:58
Nophiq
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?
aaa
22/02/05 15:01
netarrow
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:
aaa
22/02/05 15:04
netarrow
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
aaa
22/02/05 15:14
Nophiq
Che cosa ? un "Cast esplicito"?

(scusate la mia ignoranza)
aaa
22/02/05 15:23
netarrow
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
aaa
22/02/05 17:45
pierotofy
<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: piero.dev
23/02/05 15:49
netarrow
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:
aaa
23/02/05 17:35
pierotofy
:-|

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: piero.dev