Forum: Mikrocontroller und Digitale Elektronik erste Nachkommastelle von Double Wert


von uc_SD (Gast)


Lesenswert?

Hallo,

ich weiss mittlerweile wie ich von einem integer an Einer, Zehner und 
Hunderter komme:
1
int zahl;
2
unsigned char einser, zehner, hunderter;
3
einser = zahl%10;
4
zehner = (zahl/10)%10;
5
hunderter = (zahl/100)%10;

Gibt es eine ähnliche Variante, wie ich bei einem Double die erste 
Nachkommastelle abgreifen kann?

also:
1
// ist wegen double != int natürlich unschön, aber funktioniert
2
double zahl;
3
unsigned char einser, zehner, hunderter, einenachkommastelle;
4
einser = zahl%10;
5
zehner = (zahl/10)%10;
6
hunderter = (zahl/100)%10;
7
8
// einenachkommastelle = ???;

von Karl H. (kbuchegg)


Lesenswert?

uc_SD schrieb:

> Gibt es eine ähnliche Variante, wie ich bei einem Double die erste
> Nachkommastelle abgreifen kann?

Die Zahl mit 10 multiplizeren, die Zerlegung auf die Einerstelle 
durchführen :-)

Aber Achtung: gegebenenfalls muss bzw. sollte man vorher noch runden. 
Denn 0.1 kann beispielsweise im Rechner nicht gespeichert werden, 
sondern liegt zb als 0.0999999 vor. printf berücksichtigt das und rundet 
entsprechend, so dass die Ausgabe wieder 0.1 lautet, obwohl die im 
Rechner so gar nicht vor liegen.

von Georg (Gast)


Lesenswert?

uc_SD schrieb:
> // einenachkommastelle = (Zahl*10)%10;

Georg

von uc_SD (Gast)


Lesenswert?

Ich bin so dumm :)

Danke

von uc_SD (Gast)


Lesenswert?

Hmm Probleme gibt es dann mit
1
double zahl;
2
unsigned char erstenachkommastelle = (zahl*10)%10;

Compiler: -> error: invalid operands to binary % (have 'double' and 
'int')

während
1
int zahl;
2
unsigned char erstenachkommastelle = (zahl*10)%10;

funktioniert.

von uc_SD (Gast)


Lesenswert?

fmod

Danke

von sdf (Gast)


Lesenswert?

Ist double nicht Fließkomma, woher weiß man da wann das Komma kommt, 
oder ist das doch Festkommadarstellung?

von Max H. (hartl192)


Lesenswert?

uc_SD schrieb:
> Compiler: -> error: invalid operands to binary % (have 'double' and
> 'int')
Wie sieht bei einer Kommazahl der Rest einer ganzzahligen Division aus? 
Kann man Kommazahlen überhaut ganzzahlig dividieren?

von Karl H. (kbuchegg)


Lesenswert?

Max H. schrieb:
> uc_SD schrieb:
>> Compiler: -> error: invalid operands to binary % (have 'double' and
>> 'int')
> Wie sieht bei einer Kommazahl der Rest einer ganzzahligen Division aus?
> Kann man Kommazahlen überhaut ganzzahlig dividieren?

Kann man. Aber nicht mit %

Man kann aber auch das Ergebnis der Multiplikation erst mal zu einem int 
wandeln lassen. Dann klappts auch wieder mit % :-)

: Bearbeitet durch User
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.