Forum: Mikrocontroller und Digitale Elektronik Skalieren von Werten


von C_Anfänger (Gast)


Lesenswert?

Hallo,

vielleicht könnt ihr mir helfen. Mein Problem ist, das ich zum einen
einen Float Wert im Bereich von -x bis +x nach Interger -32768..32767
und umgekehrt wandeln möchte, aber nicht weiß wie ich das realisieren 
soll. Steh da grad auf dem Schlauch. Und Nein, es ist keine 
Hausaufgabe.....

Gruß Anfänger

von Sven B. (scummos)


Lesenswert?

Durch x teilen und dann mit 32768 multiplizieren.

von Limi (Gast)


Lesenswert?

Sven B. schrieb:
> Durch x teilen und dann mit 32768 multiplizieren.

Gibt bei +x einen Überlauf. Besser mit 32767 multiplizieren.

von Purzel H. (hacky)


Lesenswert?

Aber erst mit 32768 Multiplizieren(=shift left 15), und dann teilen. 
Moeglicherweise hast du gar nicht so viele Stellen ... am Besten mit 32 
bit integern rechnen. 32bit Integer haben 9 signifikante Stellen, 
waehrend 32 bit float nur 5-6 signifikante Stellen haben.

von Curby23523 N. (Gast)


Lesenswert?

6. Klasse Dreisatz

von Rolf M. (rmagnus)


Lesenswert?

Zwölf M. schrieb:
> Aber erst mit 32768 Multiplizieren(=shift left 15), und dann teilen.

Einen float shiften? Nein, man multipliziert den einfach mit 
(x/32767.0). Wie oben schon erwähnt wurde, ist 32768 eh problematisch.

> Moeglicherweise hast du gar nicht so viele Stellen ... am Besten mit 32
> bit integern rechnen.

Ob das sinnvoll ist, hängt vom (hier nicht bekannten) Wert von x ab.

> 32bit Integer haben 9 signifikante Stellen,
> waehrend 32 bit float nur 5-6 signifikante Stellen haben.

32-Bit-Integer haben 9 Stellen. Wie viele davon signifikant sind, hängt 
vom genutzten Wertebereich ab.

von Dirk B. (dirkb2)


Lesenswert?

Zwölf M. schrieb:
> 32 bit float nur 5-6 signifikante Stellen

Der gewünschte Zielbereich hat auch nur 5 signifikante Stellen.

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.