www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP2013 - Probleme mit Variable


Autor: Nobbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
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.
fValue1  = 0.44775 * 0.44775 * 0.44775 * 0.44775 * 0.44775;
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das
fValue2  = 0.0179961 * 0.0518796765163;
berechnet der PC (via Compiler).

Und hier
fValue1  = 0.44775 * 0.44775 * 0.44775 * 0.44775 * 0.44775;
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...

Autor: Nobbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.