2016-05-25 9 views
-2

Sollte 213,3333333... sein, ist aber 320.0. Warum?Wie teilt man eine ganze Zahl durch doppelte?

Ich meine: Ich verwende Double, warum bekomme ich Integer?

+2

Sie nicht das Ergebnis einer Operation werfen sollte ein Doppel. Erzwinge stattdessen, dass alle Operanden verdoppelt werden. (3/2) sollte sein (3.0/2.0) – JohannisK

+5

Seltsam, dass jemand mit 11.7k Reputation diese Frage stellt. –

+1

'3/2' ist' 1'. '(double) (3/2)' is '(double) 1', was' 1.0' ist. Wenn Sie '1.5' wollen, verwenden Sie '1.5', oder' 3.0/2' – khelwood

Antwort

10

3/2 ist int division, was 1 ergibt (und casting do double results in 1.0). Daher teilen Sie 320 durch 1.0.

Verwenden Sie stattdessen 1.5 (oder 3.0/2, wenn Sie müssen).

+0

3f/2 sollte auch funktionieren – Aimnox

+2

@Aimnox Eher '3d', wie wir Doppel verwenden. :) – Ivar

2

Sie tun das Casting double nach der Division, die mit Ganzzahlarithmetik ausgeführt wird. Der einfachste Weg, Gleitkomma-Arithmetik zu zwingen, ist von einem der Operanden macht eine doppelte:

int integ = 320; 
System.out.println((double) integ /(3.0/2)); 

oder wenn die Eingangswerte sind Variablen:

int x = 3; 
int y = 2; 
System.out.println((double) integ /(1.0*x)/y); 
Verwandte Themen