Forum: Mikrocontroller und Digitale Elektronik MSP2013 - Probleme mit Variable


von Nobbie (Gast)


Lesenswert?

Hallo,

ich habe momentan ein merkwürdiges Problem mit float Operation.

Ich verwende einen MSP2013 und programmiere diesen über das CrossStudio.

Mein Problem ist jetzt, multipliziere ich zwei statische Werte bekomme 
ich das richtige Ergebnis:
1
fValue2  = 0.0179961 * 0.0518796765163;
Ergebnis: 0.000933632 [richtig]


Multipliziere ich jetzt aber eine Variable(fValue1 = 0.0179961) mit dem 
zweiten statischen Wert, kommt ein fehlerhaftes Ergebnis heraus.
1
fValue1  = 0.44775 * 0.44775 * 0.44775 * 0.44775 * 0.44775;
2
fValue2  = fValue1 * 0.0518796765163;
Ergebnis: 0.000497699 [falsch]

Woran kann das liegen? Die Variablen sind als float deklariert und 
initialisiert. Ich habe keine Ahnung was hier falsch sein soll

Danke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Das
1
fValue2  = 0.0179961 * 0.0518796765163;
berechnet der PC (via Compiler).

Und hier
1
fValue1  = 0.44775 * 0.44775 * 0.44775 * 0.44775 * 0.44775;
2
fValue2  = fValue1 * 0.0518796765163;
stellt sich die Frage: Geht die erste Zeile schief oder die zweite.
Denn auch hier wird die erste Zeile wieder vom Compiler berechnet,
die zweite vom uC.

Wie sieht das mit anderen Float-Operationen und -Werten aus?
Addition, Subtraktion...

von Nobbie (Gast)


Lesenswert?

Hey,

die zweite Zeile geht schief. Ich schaue mir dir Variablen mit dem 
Debugger an und erkenne, dass fValue1 == 0.0179961 ist. Also exakt der 
Wert, mit dem vorher statisch gerechnet wurde.

Die anderen mathematischen Operationen muss ich noch ausprobieren.

Danke und Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.