C++ -ban hogy lehet egy double/float változóban eltárolt számnak csak a tizedesvessző utáni részét kiírni?
Van egy feladat, hogy többször feldobnak egy pénzérmét, és meg van adva az összes dobás száma, és az hogy hányszor dobtunk fej-et. Ebből kell kiszámolni a fej relatív gyakoriságát, ami a fejet eredményező dobások és az összes dobás hányadosa.
Én úgy csinálom, hogy
double relativgyak=fejdarab/osszes;
Viszont így 0-át ír ki. Viszont ha még működne is, akkor így nézne ki pl: 0,515231 és ebből kéne kiírnom 2 tizedes jegyig, hogy ez esetben 51% a fejek dobásának relatív gyakorisága.
Hogy tudnám ezt megoldani, mert még a tizedesvessző utáni részt sem írja ki, hanem csak 0-át kapok mindig?
azért nulla mert int/int nem lesz double, hanem az osztás után a tizedesvessző előtti rész, legjobb esetben is nálad 1.
Castolni kell az egyik szamot doublere
double d = ((double) fej)/osszes;
cout << d*100;
Amikor számjegyeket vágsz le egy számról, akkor azt kerekítéssel csináld.
double relativgyak = double(fejdarab)/osszes;
cout << round(relativgyak*100) << "%" << endl;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!