Forum: PC-Programmierung Integer/Integer soll eine kommzahl ergeben aber nur mit int als Datentyp


von malik (Gast)


Lesenswert?

Hallo, ich habe folgendes Problem.
Ich muss eine Division durchführen bei der ich nur int als Datentyp 
verwenden darf aber ich muss auf ein Ergebnis mit 2 Nachkommastellen 
kommen.
Ich finde einfach keine Lösung.
Danke

also

#include<stdio.h>
int main()
{
int sum;
int prod;
int divison;

 sum = 2+4+6;
 prod = 4*1*4;
 division = prod/sum;

printf("sum %d\n", sum);
printf("prod %d\n",prod);
printf("sum %d\n", division);
return 0;
}

von Peter II (Gast)


Lesenswert?

prod * 100 rechnen.

dann bei der ausgabe noch das , setzen fertig.

von Der Andere (Gast)


Lesenswert?

Bitte die ganze Hausaufgabe posten.

Dir ist bekannt, dass Ganzzahlenaithmetik abschneidet?

Also:
19/10 = 1
9/10 = 0

Zur Aufgabe:
Bestimme die Anzahl der Nachkommastellen, die du haben möchtest
Multipliziere die zu dividierende Zahl mit dem entsprechenden Faktor
Dann dividiere
Die hintersten Stellen sind dann die Nachkommastellen.
Erhalten kannst du die mit dem Modulo (Rest) Operator.

von M.N. (Gast)


Lesenswert?

int prod_100 = prod * 100;
int div_100 = prod_100 / sum;
int div_vorkomma = div_100 / 100;
int div_nachkomma = div_100 - div_vorkomma;

printf("Division: %d.%d", div_vorkomma, div_nachkomma);

von Daniel A. (daniel-a)


Lesenswert?

https://www.mikrocontroller.net/articles/Festkommaarithmetik

Kurzform: prod vor der Division mit 100 multiplizieren:
1
division = prod*100/sum;
2
printf("sum %d.%d\n", division/100,division%100);

von malik (Gast)


Lesenswert?

also ganz konkret hab ich bis jetzt genau das gemacht,

ich brauche die kommastellen vom Ergebnis 805 / 8
ergibt mit kommt 100,62
aber ich komm nur auf 10062
wenn ich den dividend mit 100 multipliziere
dann schreib ich unten beim printf

int division;

divison = 805/8;

printf("division%d.\n, division);

das Ergebnis lautet dann 1062.0
ich hätte gerne 100.62
danke

von Mikro 7. (mikro77)


Lesenswert?

Daniel A. schrieb:
1
> printf("sum %d.%d\n", division/100,division%100);

Naja...
1
printf("sum %d.%02d\n", division/100,division%100);

... sieht "besser" aus wenn man an vorlaufende Nullen hinterm 
Komma/Punkt gewöhnt ist. ;-)

von malik (Gast)


Lesenswert?

dankeschön ! :) jetzt habe ich es!

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.