erste Nachkommastelle von Double Wert

Gast #3909417
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 = ???;
#3909425
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.
Gast #3909460
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.
#3909498
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 % :-)

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