2016-08-30 4 views
-6

sorry für die einfache Frage, aber wie kann ich f.e konvertieren. 29.4 in 0x0DBE und -12 in 0x8350.ANSI C: Wie man einen Fließkommawert in eine kurze Variable umwandelt

int ss_bat_temp = 294; //a temperatur in 0.1 Celsius 
fvalue = (float) ss_bat_temp/10; 
short svalue = (short)(fvalue); 

Aber es funktioniert nicht.

Das Ergebnis ist 0x001D nicht 0x0DBE. Was ist das Problem?

Könnte mir jemand helfen?

+0

Verwenden Sie 'short svalue = (kurz) (fvalue)' ?? Ich denke, das ist ein Tippfehler –

+6

Warum erwarten Sie '0x0DBE'? –

+1

(kurz) 29.4 = 29 = 0x1D, was ist das Problem? –

Antwort

0

Float ist ein 8 Bytes lang und kurz ist 4 (glaube ich) .Wenn Sie von Float zu Short konvertieren, verlieren Sie diese Informationen, da Sie es verkleinern müssen.

Verwandte Themen