Probleme mit float und int

cheh

Mitglied
hey,
ich habe eine Verständnisfrage zu der berechnung mit floats :
also : ich habe auf einem Panel ein raster von gezeichneten kästchen.
und wenn ich jetzt auf eins draufklick möchte ich gerne ausrechen, wo es sich befindet (sprich zeile und reihe ).
Das funktioniert auch, mir ist aber nicht klar warum, und ich hoffe es kann mir jemand erklären.
Hier der Code :

Java:
public int[] position(int posX, int posY) {
	int x = 0 ;
	int y = 0 ;
	double fx = (posX/(optimale_breite + abstand));  // hier ist der Fehler (siehe Text unten)
//	System.out.println("" + fx + "|" + (posX* 1/(optimale_breite + abstand)));
	double fy = (posY/(optimale_hoehe + abstand));  // hier ist der gleiche Fehler ...
	x = new Double(fx).intValue();
	y = (int) fy ;
	int[] result = {x,y};
        return result;
			
		}

So bei der markierten Zeile kommen immer merkwürdige dinge 'raus und ich versthe nicht warum :
Beispiel : posX = 192 ; optimale_breite = 27 ; abstand = 10

so : wenn ich mit dem Taschenrechner ausrechne (192 / (27+10) ) bekomme ich 5,189.. raus

wenn ich an die stelle einen Breakpoint setz und mit F11 den debugger starte und das Ergebnis von fx betrachte steht da "5.0" ! Warum ist fx nicht 5.189 ???

ich verstehe es nicht ..
 
posX und posY sind int´s , caste dir vorher zu double und der Fehler sollte nicht mehr vorhanden sein.

Java:
 double fx = ((double)posX/(double)(optimale_breite + abstand));
 
Zuletzt bearbeitet:
java rechnet erst die rechte Seite aus...da dividierst du 2 int´s. Dieses Ergebnis (int/int liefert wieder ein int)
Dieses int wird einem double zugewiesen, also wird aus 5 deine 5.0, nachkommastellen entfallen.

wenn eines der beiden (Dividend, oder DIvisor) ein double ist, ist das Ergebnis auch ein double.
 
Zuletzt bearbeitet:

Zurück
Oben