Kezdőoldal » Számítástechnika » Programozás » C++ -ban hogy lehet egy...

C++ -ban hogy lehet egy double/float változóban eltárolt számnak csak a tizedesvessző utáni részét kiírni?

Figyelt kérdés

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?


2018. máj. 11. 14:06
 1/4 Shai-Hulud ***** válasza:
printf("%d %%", relativgyak * 100);
2018. máj. 11. 14:14
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
100%

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;

2018. máj. 11. 15:03
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
Köszönöm!
2018. máj. 11. 18:42
 4/4 sharkxxx ***** válasza:

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;

2018. máj. 12. 00:49
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!