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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.