www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik unsigned int mit float multiplizieren


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnte mir jemand bitte sagen ob folgende Code-Zeile so funktionieren 
könnte.

Schwelle = (u16)((Sum_mittel * Faktor) + Offset);

Sum_mittel ist unsigned int (16-Bit)
Faktor und Offset ist float
Schwelle ist wieder unsigned int (16-Bit)

Faktor und Offset sind immer positiv.

Danke, Gruß Tobias

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
klare Antwort Jain.

Je nach Wertebereich Deiner Variablen wird es Funktionieren oder nicht.

ciao

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klare Antwort Ja.

Der Code ist syntaktisch richtiger C-Code, und wird damit immer genau 
das machen, was der C-Standard dafür vorschreibt (wenn der verwendetet 
Compiler keine Macke hat).

Ob das, was nach C-Standard da passieren soll, auch das ist, was du dir 
vorstellst, ist eine andere Frage.

Oliver

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

Bewertung
0 lesenswert
nicht lesenswert
> Je nach Wertebereich Deiner Variablen wird es Funktionieren oder nicht.
Nimm zum Beispiel einfach mal für Faktor den Wert 0.0001 und für Offset 
den Wert -234567.89 und schon funktionierts nicht mehr... :-/

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt, Faktor und Offset sind immer POSITIV. Ein Überlauf von 
Schwelle ist auch ausgeschlossen.
Mich interessiert mehr ob das mit dem Umwandeln von einer 
vorzeichenbehafteten Zahl in eine vorzeichenlose Zahl so passt.

Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und für Offset den Wert -234567.89
passt eh nicht zu
> Faktor und Offset sind immer positiv.

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt:
Der Syntax ist korrekt.
Aber ob du damit glücklich wirst hängt vom Wertebereich und der 
geforderten Auflösung ab.
Du must sicherstellen das kein Über/Unterlauf passiert und noch genug 
Auflösung bleibt.
Kommen Faktor und Offset von einer Kalibrierung, kann man davon ausgehen 
das es Past. Sind das Handeingaben, würde ich auf jedenfall auf den 
zulässigen Bereich prüfen.

ciao Volker

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.