Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回更改程序小数c++;_C++_Decimal_Coin Change - Fatal编程技术网

C++ 返回更改程序小数c++;

C++ 返回更改程序小数c++;,c++,decimal,coin-change,C++,Decimal,Coin Change,我的编程课程的一个练习要求我们为出纳编写一个程序,提示到期金额和收到金额,并计算更改。它还必须计算所需的美元、25美分硬币、10美分硬币、5美分硬币和便士的数量。它在一角硬币、五分镍币和一分钱之前工作正常。这就是输出不稳定的地方。我还注意到VisualStudio将0.10读取为.10000000000000056。镍币和便士也是如此,但美元和25美分硬币却不是这样。我尝试了几种不同的方法来修复它,但没有成功。有什么建议吗 cout << "Amount Due. \n"; doub

我的编程课程的一个练习要求我们为出纳编写一个程序,提示到期金额和收到金额,并计算更改。它还必须计算所需的美元、25美分硬币、10美分硬币、5美分硬币和便士的数量。它在一角硬币、五分镍币和一分钱之前工作正常。这就是输出不稳定的地方。我还注意到VisualStudio将0.10读取为.10000000000000056。镍币和便士也是如此,但美元和25美分硬币却不是这样。我尝试了几种不同的方法来修复它,但没有成功。有什么建议吗

cout << "Amount Due. \n";
double due;
cout << "$";
    cin >> due;

cout << "Amount recieved. \n";
double rec;
cout << "$";
    cin >> rec;

double change = (rec - due);
cout << "Total change= $" << change << " \n";

int dollars = change / 1.00;
change = change - dollars;

int quarters = change / .25;
change = change - quarters;

int dimes = change / .10;
change = change - dimes;

int nickels = change / .05;
change = change - nickels;

int pennies = change / .01;
change = change - pennies;

cout << "Number of dollars: " << dollars << " \n";
cout << "Number of quarters: " << quarters << " \n";
cout << "Number of dimes: " << dimes << " \n";
cout << "Number of nickels: " << nickels << " \n";
cout << "Number of pennies: " << pennies << " \n";

return 0;
到期;
cout-rec;
双重变更=(收款到期日);
库特
continue
关键字从顶部再次启动循环。 此实现可以抵抗浮点不精确。

可能的
while(change > 0){
    if(change >= 1.00){
        dollars ++;
        change -= 1;
        continue;
    }
    if(change >= 0.25){
        quarters ++;
        change -= 0.25;
        continue;
    }
    if(change >= 0.10){
        dimes ++;
        change -= 0.1;
        continue;
    }
    if(change >= 0.05){
        nickels ++;
        change -= 0.05;
        continue;
    }
    if(change >= 0.01){
        pennies ++;
        change -= 0.01;
        continue;
    }
}