berrechnung in einer Methode immer 0 wieso?
-
Hi,
ich habe eine Klasse Dreieck und die greift per public Methoden auf Werte der Klasse Punkt zu.
float Dreieck::flaeche(void) const { // Werte vom Dreieck mit Methode getX aus Klasse Punkt2D holen. int tempxA = pA.getX(); int tempyA = pA.getY(); int tempxB = pB.getX(); int tempyB = pB.getY(); int tempxC = pC.getX(); int tempyC = pC.getY(); /*cout << tempxA << endl; cout << tempxB << endl; cout << tempxC << endl; cout << tempyA << endl; cout << tempyB << endl; cout << tempyC << endl; */ float f; f = (1/2) *(tempxA * (tempyB - tempyC) + tempxB * (tempyC - tempyA) + tempxC * (tempyA - tempyB)); if(f >= 0) { return f; //Falls Fläche nicht negativ f zurückgeben } else { f = f * (-1); return f; //Falls Fläche negativ f mit -1 multiplizieren } }
tempxA usw haben richtige Werte zugewiesen bekommen. Nur f ist immer null wieso?
-
1/2 ist nach C++-Regeln 0. Wieso?
1 ist ein int
2 ist ein int
Die arithmetische Verknüpfung von zwei ints ist wieder ein int, also wird das mathematisch korrekte Ergebnis von 0.5 zu 0 abgerundet.Lösung: 0.5 hinschreiben. Oder 1.0/2
-
Könnte daran liegen, dass in C++ 1/2 niemals = 0.5 ist, sondern = 0.
-
mist
zuspät
-
Ok THX das war es habe 1.0 statt 1 jetzt eingesetzt.
Danke noch mal!