alligator Geschrieben 22. Mai 2002 Teilen Geschrieben 22. Mai 2002 Hi zusammen, erstmal hier der Code. int a=10,b=3; float c=0; c = a*1./b; cout << c; Es geht um die Problematik dass wenn ich 2 Integer durcheinander teile und das Ergebniss dann in ein Float speichere. Naja ich frag mich grad warum man das in C++ so blöd machen muss? Wieso geht nicht einfach: c = a/b; Deshalb deklariere ich ja c als float das der das Ergebniss ( die Zuweisung) als Kommastelle versteht. Kann mir das mal jemand erklären, denn bis jetzt hab ichs halt so hingenommen, dass des C++ einfach net blickt ... cu alligator Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 22. Mai 2002 Teilen Geschrieben 22. Mai 2002 Naja du musst das ja nicht SO -> c = a*1./b; bloed machen. Mit c = a/(float)b; schauts doch ganz ok aus oder? Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alligator Geschrieben 22. Mai 2002 Autor Teilen Geschrieben 22. Mai 2002 Hi, 1. naja das erklärt dennoch nicht das Problem 2. Ich hatte es auch so c = (float a) / b; versucht, aber dass es so c = (float) a / b; tut find ich auch sehr sehr seltsam ... cu alligator Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 22. Mai 2002 Teilen Geschrieben 22. Mai 2002 Hoi, zu 1. Aehmmm wo ist denn da nun ein Problem? zu 2. Wieso findest das komisch? ein c = (float a) / b; waere ja sowas wie eine versuchte neu Deklaration von a als float, was man aber so nicht darf. und ein c = (float)a/b; ...nuja dabei ist das (float) ja nur ein Casting, waere also so aehnlich, also wenn du gleich ein float a = 10; festgelegt haettest....da das dann keine reine Integer Divison mehr ist wird das Ergebnis auch nicht mehr auf ein Int gekuerzt. CU Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zeku Geschrieben 23. Mai 2002 Teilen Geschrieben 23. Mai 2002 Der Grund, warum dies int a=10,b=3; float c; c=a/b; nicht funktioniert ist, daß der Compiler erst den Ausdruck a/b ausrechnet (Ergebnis ist vom Typ int) und dann den Wert c zuweist (int wird in float umgewandelt). Sorgt man aber dafür, daß eine der beiden Variablen, also a oder b, vorher in float umgewandelt wird, dann ist auch das Ergebnis der Division vom Typ float, denn C wandelt bei verschiedenen Typen bei einer Operation immer erst eine der beiden Variablen so um, daß beide den gleichen Typ haben, führt dann die Operation aus, deren Ergebnis dann vom gleichen Typ ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.