首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带浮点的C语言中的现金除法错误

带浮点的C语言中的现金除法错误
EN

Stack Overflow用户
提问于 2019-05-14 20:17:04
回答 3查看 209关注 0票数 1

我目前正在研究cs50的“现金”问题:估计需要支付一些零钱的硬币数量。

例如:0.41美元=1个25美分,1个10美分,1个5美分,1便士。

然而,当估计所需的硬币数量时,我最终得到的是便士,我认为这是由于我的错误,因为它似乎总是偏离一到两个硬币(便士)。

我已经包含了多个printf语句来尝试跟踪我可以做的事情,但是我似乎不明白为什么这个部门不能工作。

代码语言:javascript
复制
#include <cs50.h>
#include <stdio.h>

int main(void)
{
    // change
    float change = get_float("how much change is owed?: ");
    int coins = 0;

    //reprompt
    while (change < 0)
    {
        change = get_float("how much change is owed?: ");
    }

    //quarter
    float quarter = 0.25;
    float quarters = change / quarter;
    quarters = (int) quarters;
    change = change - (quarters * quarter);

    printf("%f quarters\n", quarters);

    //dimes
    float dime = 0.10;
    float dimes = change / dime;
    dimes = (int) dimes;
    change = change - (dimes * dime);

    printf("%f dimes\n", dimes);

    //nickels
    float nickel = 0.05;
    float nickels = change / nickel;
    nickels = (int) nickels;
    change = change - (nickels * nickel);

    printf("%f nickels\n", nickels);
    printf("%f in change left change\n", change);

    //pennies
    float penny = 0.010000;
    float pennies = change / penny;
    pennies = (int) pennies;
    change = change - (pennies * penny);

    printf("%f pennies\n", pennies);

    //coins
    coins = quarters + dimes + nickels + pennies;
    printf("%i\n", coins);

    //printf("%f\n", change);
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56130276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档