2016-05-06 16 views
0

so schrieb ich dieses kleine Stück der Funktion, die Bild auf Breite von 800 skalieren soll (Höhe kann alles sein).Java: Division Integer von größeren Integer Ursachen 0

jedoch - wenn ich ganze Zahl dividieren (800) durch größere Integer (1080 zum Beispiel), das Ergebnis kommt als 0.

Was das verursacht?

  double ratio = 800/bit.getWidth(); 
      double newHeight = ratio * bit.getHeight(); 
      double newWidth = ratio * bit.getWidth(); 
      Log.d("New Values:", String.valueOf(newHeight) + "/ " + String.valueOf(newWidth)); 
      scaleBitmap(bit, (int)newHeight, (int)newWidth); 

meine ich das Doppel genannt Verhältnis kommt als 0.

Antwort

2

800/1080 ist Integer-Division führen beide Operanden int die sind, also auf Null (ca. 0.740 .. abgerundet auf Null) aufgelöst wird.

Um die Integer-Division zu vermeiden, wandeln Sie einen beliebigen von ihnen in Double um. Sie werden das Ergebnis sehen.

+0

Ich nahm an, wenn ich eine Variable als doppelt machen - es wird Ergebnis als doppelt erhalten? – arleitiss

+0

@arleitiss Ja ist es. –