unsigned int mit float multiplizieren

Gast #1627630
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
Gast #1627646
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
Gast #1627651
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.
#1627673
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren