Desetinný výsledek

Pokud chcete desetinný výsledek, musí být aspoň jedno z obou čísel desetinné:

printf("%f\n", 7 / 2.0);
printf("%.1f\n", 7.0 / 2);

Vypíše:

3.500000
3.5

Výsledek je typu double, a tak ho vypíšete pomocí %f nebo %.1f. S %d by to byla chyba při překladu, jak už víte.

Typická chyba je myslet si, že stačí výsledek uložit do proměnné typu double:

double polovina = 7 / 2;
printf("%f\n", polovina);

Vypíše:

3.000000

C nejdřív spočítá 7 / 2. Obě čísla jsou celá, takže vyjde 3, a teprve tato trojka se uloží do proměnné polovina. Typ proměnné vlevo od = na tom, jak se počítá pravá strana, nic nezmění.

Stejně to dopadne s proměnnými. Hráč nasbíral ve 4 zápasech 17 bodů. Kolik je to v průměru?

int body = 17;
int zapasy = 4;
double prumer = body / zapasy;
printf("Průměr: %.2f\n", prumer);

Vypíše:

Průměr: 4.00

To je špatně, správně je 4,25. K proměnné nemůžete připsat .0, ale můžete její hodnotu převést na typ double. Napište před ni typ v závorkách:

int body = 17;
int zapasy = 4;
double prumer = (double)body / zapasy;
printf("Průměr: %.2f\n", prumer);

Vypíše:

Průměr: 4.25

(double)body vezme hodnotu proměnné body jako desetinné číslo, tedy 17,0. A desetinné číslo vydělené celým dá desetinný výsledek. Samotná proměnná body zůstane typu int. Takovému převodu se říká přetypování.

Pozor, kam ho napíšete. (double)(body / zapasy) nepomůže: kvůli závorkám C nejdřív vydělí a na 4,0 se převede až výsledek 4.

Pokyny

Kamarádi si účet za pizzu, 1250 Kč, rozdělí rovným dílem. Spusťte program: vypíše 312.00, takže 2 Kč z účtu chybí. Opravte výpočet proměnné na_osobu pomocí (double), aby program vypsal Každý zaplatí: 312.50 Kč.

Pizzy byly nakrájené na 18 kousků. Na další řádek vypište, kolik stojí jeden kousek. Tentokrát napište 18 rovnou do výpočtu jako desetinné číslo, 18.0:

Jeden kousek: 69.44 Kč

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

8/11