Převod z dolarů na centy
On 14 února, 2021 by adminSnažím se pomocí funkce round přejít z dolarů na centy, ale věřím, že něco o funkci round je nepochopeno, protože prostě nemám desetinná místa, když vynásobím 100 z plováku na int. Toto je příslušný kód
#include <stdio.h> #include <cs50.h> #include <math.h> int main(void) { int owed = 0; printf("Enter the owed amount: "); do { owed = GetFloat(); } while (owed < 0); owed = owed * 100.0; float owe = roundf(owed); owe = (int)owe;
Komentáře
- nebyl jsem ' Nevím, jak to zaokrouhlit Byl jsem uding Round () Ne Roundf () Mohl byste mi to vysvětlit, prosím
Odpovědět
Hlavním problémem je, jak ukládáte počáteční načtenou hodnotu. Voláte GetFloat()
a výsledek ukládáte do owed
proměnné typu int. GetFloat () vrací číslo s plovoucí desetinnou čárkou, které bude implicitně obsazeno jako int při pokusu o uložení do dlužného. V tomto procesu bude část desetinné čárky zkrácena. To znamená, že se můžete pokusit uložit 4,85 celý den a vždy se uloží jako celé číslo 4.
Hodnotu vrácenou z funkce GetFloat () byste měli ukládat do proměnné float var, nikoli do int. Později vynásobte 100 a zaokrouhlete a pak uložte do int, jak se snažíte.
Jako vedlejší poznámku, posledních pár řádků, zatímco budou fungovat , nejste strašně čistí. Vytvoříte nový plovák, abyste upravili, jaký by měl být jiný plovák, a uložte výsledek, a na dalším řádku vrhněte plovák na int a uložte int zpět do plováku. zaokrouhlit plovák a uložit jej zpět do stejného plováku, ale na dalším řádku vrhnout plovák jako int a uložit jej do nového, int var. Nebo čistší věcí by bylo udělat vše v jednom řádku: int change = roundf(dollars*100);
Pokud to odpovídá na vaši otázku, kliknutím na zaškrtnutí ji přijměte. Pokračujte v údržbě fóra. 😉
Komentáře
- Jak mi to mohlo uniknout? Děkuji mnohokrát. Můj kód skončil po 3 hodinách hraní s kulatou funkcí hrozně, nemohu ' t uvěřit, že bych mohl udělat tak hloupou chybu;)
- Možná jsem super vybíravý, ale měli byste se držet stranou od Implicit Casting a vždy používat Explicit Casting je mnohem jasnější pro kompilátor i budoucí programátory, o co se vlastně snažíte. Je to velmi dobrý zvyk, abyste se dostali do raného programování, protože to bude druhá přirozenost a ušetří vám spoustu bolestí hlavy (a uděláte mnohem lepší kód). int change = (int) (roundf (dollars * 100));
Napsat komentář