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.5Vý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.000000C 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.00To 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.
Jak psát:
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
8/11