钱数面额c++

money count denomination C++

本文关键字:c++ 钱数面      更新时间:2023-10-16

所以我的项目是开发一个应用程序,用户输入一个金额(例65.67),输出打印总共有多少美元、25美分、10美分、5美分和1美分(示例是5.52美元是5美元、2个25美分和2个1美分)。下面我留下了处理总数计算的代码块。1美元和25美分的硬币分配得很合理,但10美分、5美分和1美分却没有。我的逻辑出了问题,任何建议都将不胜感激。我用的是windows 8.1, Code::Blocks IDE

    // Calculations for money denomination//
    float dollar = floor(total);
        total = total-dollar;
    float quarter = floor(total/.25);
        total= total -(quarter*.25);
    float dime = floor(total/.1);
        total = total-(dime*.1);
    float nickel = floor(total/.05);
        total = total-(total*.05);
    float penny = floor(total/.01);
        total = total-(total*.01);

处理货币值应该使用整数,因为在对浮点值执行计算操作时不能保证浮点值正确舍入。

基本上,你应该使用尽可能小的货币单位(美分),并以这些单位管理所有的货币价值。在显示值时,您将转换为用户期望的适当格式。

谢谢大家的建议,这是我最后做的。我敢肯定这不是最优雅的方式,但它能完成任务。

/// This states variables as well as evolving tally of dollar amount ///
int _total = (total*100)+.5; 
int dollar = _total/100;
 _total = _total%100;
int quarter = _total/25;
 _total= _total%25;
int dime = _total/10;
 _total = _total%10;
int nickel = _total/5;
 _total = _total%5;
int penny = _total/1;
 _total = _total%1;