Berechnungs (Division) Fehler

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
toba
Beiträge: 28
Registriert: 22. September 2011 09:28

Berechnungs (Division) Fehler

Beitrag von toba » 14. Februar 2012 09:47

Hi,

das mag jetzt blöd klingen, aber meine Divison funktioniert nicht so wie ich es will O.o

Code: Alles auswählen

float Multiplikation = 0;
Multiplikation = 50*0.01;   //Ergebniss: 0.5

float Division = 0;
Division = 50/100;          //Ergebniss: 0

float Division2 = 0;
Division2 = 100/100;        //Ergebniss: 1
als Header sind <math.h> und <QtAlgorithmus> (brauche qSort) eingebunden.

Irgendwas muss ich doch falsch machen?! Steh grad n bissl aufm Schlauch..
Auch wenn ich mit = 0.0 initialisiere funktioniert es nicht, bzw. auch wenn ich es in einem seperatem file ausführe und nur math.h einbinde gehts nicht.

brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: Berechnungs (Division) Fehler

Beitrag von brax » 14. Februar 2012 10:18

50/100 führt eine Division zwischen zwei int Werten aus. Das Ergebnis ist dann 0. Durch die Zuweisung an den float ändert sich dadurch nichts. Probier mal 50.0/100 aus.

toba
Beiträge: 28
Registriert: 22. September 2011 09:28

Re: Berechnungs (Division) Fehler

Beitrag von toba » 14. Februar 2012 10:25

DER GEHT!
Ich glaubs ja nicht :D

Aber irgendwie blöd immer ne .0 dranzusetzen...

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Berechnungs (Division) Fehler

Beitrag von franzf » 14. Februar 2012 10:39

Es geht auch mit einer der beiden hier:

Code: Alles auswählen

float wert = 50/static_cast<float>(100);
float wert2 = static_cast<float>(50)/100;
Ist das schöner? :D

toba
Beiträge: 28
Registriert: 22. September 2011 09:28

Re: Berechnungs (Division) Fehler

Beitrag von toba » 14. Februar 2012 10:50

hmm schick :)

Ja, mir ist nun auch wieder eingefallen das das ja so sein muss..
Mir ists eigentlich nicht aufgefallen da bei mir so grob stand:
#define Prozentsatz 50

Multiplikator = Prozentsatz/100;

nun steht #define Prozentsatz 50.0 :)
Werds mir aber nun auf jedenfall wieder ins Gedächtnis setzen.

Antworten