Division - kein Ergebnis
-
Hi,
ich habe nun mal mit C++ begonnen, bei einem Beispiel der 4 Rechenarten bekomme ich bei der Division kein Ergebnis.
Der Variablentyp ist float, so sollte das ja eigentlich wegen den Nachkommastellen passen. Es erscheint jedoch immer 0.
Ist sicherlich ganz einfach aber ich verstehe es gerade nicht.Danke für die Hilfe.
#include <iostream> using namespace std; int main() { int zahl1 = 4; int zahl2 = 2; int zahl3 = 120; int ergebnisAdd, ergebnisSub, ergebnisMul; float ergebnisDiv; ergebnisAdd = zahl1 + zahl2 + zahl3; ergebnisSub = zahl1 - zahl2 - zahl3; ergebnisMul = zahl1 * zahl2 * zahl3; ergebnisDiv = zahl1 / zahl2 / zahl3; cout << "Addition: " << zahl1 << " + " << zahl2 << " + " << zahl3 << " = " << ergebnisAdd << endl; cout << "Subtraktion: " << zahl1 << " - " << zahl2 << " - " << zahl3 << " = " << ergebnisSub << endl; cout << "Multiplikation: " << zahl1 << " * " << zahl2 << " * " << zahl3 << " = " << ergebnisMul << endl; cout << "Division: " << zahl1 << " / " << zahl2 << " / " << zahl3 << " = " << ergebnisDiv << endl; return 0; }
-
zahl1, zahl2 und zahl sind vom Typ her int, können also keine Nachkommastellen haben. Wenn du zahl1 / zahl2 / zahl3 rechnest kommt daher 0 raus. Diese 0 wird dann in die Fließkommazahl 0.0f umgewandelt.
Einfache Lösung: 1.f * zahl1 / zahl2 / zahl3;
Denn wenn man floats und ints miteinander verrechnet werden zuerst die ints in floats umgewandelt.
-
Aaah, klar.
Danke für den Tipp!
-
warum nicht mit:
(float)zahl1 / zahl2 / zahl3?
Macht man sowas nicht?
-
Sqwan schrieb:
warum nicht mit:
(float)zahl1 / zahl2 / zahl3?
Macht man sowas nicht?Ich mache
float(zahl1) / zahl2 / zahl3, aber werde immer verhauen, weil die Profis meinen, es müsse
static_cast<float>(zahl1) / zahl2 / zahl3heißen.
-
Lustig.
Wenn volkard als bekannter Anfänger hier sich den Profis nicht anschließt, gibt es vermutlich auch keinen nachvollziehbaren Grund dies zu tun. Jedenfalls in diesem Falle.
-
Sqwan schrieb:
Lustig.
Wenn volkard als bekannter Anfänger hier sich den Profis nicht anschließtJa, der Bubele will einfach nicht hören!
Übrigens, haben wir nicht schon geklärt, dass
static_castnie für arithmetische Typen zu verwenden ist?