Forum: Mikrocontroller und Digitale Elektronik Negative Floatzahl in negative Integerzahl umwandeln


von Guenther33 (Gast)


Lesenswert?

Hallo Leute,
stehe vor einem hoffentlich kleinen Problem.

Habe eine Zahl vom Typ Float, (bsw. 323.34) welche ich mit 10 
multipliziere (um eine Nachkommastelle zu behalten) und als int-Variable 
speichere und diese Int-Zahl dann  folgendermaßen zerlege:

intnumber=zahl*10;

nachkomma=intnumber%10;
einer=(intnumber%100)/10;
zehner=(intnumber%1000)/100;
hunderter=(intnumber%10000)/1000;


Mein Problem: Es kann sein, das die Floatzahl negativ ist und dann 
"intnumber=zahl*10;" nicht mehr geht.

Was kann ich also machen, um aus einer negativen Floatzahl eine negative 
Intzahl zu erhalten, damit meine "Zerlegung" weiterhin läuft?

von c-hater (Gast)


Lesenswert?

Guenther33 schrieb:

> Mein Problem: Es kann sein, das die Floatzahl negativ ist und dann
> "intnumber=zahl*10;" nicht mehr geht.

Wieso soll das nicht gehen? Das geht natürlich, solange "Zahl" nicht 
kleiner als -3276,8 ist. Genauso wie es im positiven Bereich geht, 
solange "Zahl" nicht größer als 3276,7 ist.

> Was kann ich also machen, um aus einer negativen Floatzahl eine negative
> Intzahl zu erhalten, damit meine "Zerlegung" weiterhin läuft?

Du hast das Problem nicht erkannt. Was Mist ist, ist deine Zerlegung. 
Die muß einfach anders arbeiten, wenn "intnumber" negativ ist. Am 
einfachsten merkst du dir, daß "intnumber" negativ ist und machst sie 
wieder positiv, z.B. durch Multiplikation mit -1.

Dann funktioniert deine Zerlegung wieder. Du mußt bloß noch die gemerkte 
Tatsache der Negativität in Form eines führenden Minuszeichen ausgeben 
und der Drops ist gelutscht.

von Michael (Gast)


Lesenswert?

Guenther33 schrieb:
> intnumber=zahl*10;
>
> nachkomma=intnumber%10;
> einer=(intnumber%100)/10;
> zehner=(intnumber%1000)/100;
> hunderter=(intnumber%10000)/1000;

Deine ganze Dividiere- und Modulorechnerei kostet dich mehr Resourcen 
als jeweils bis zu 9x 1000, 100, 10 und 1 abzuziehen.

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.