如何在零钱计算器程序中花2.30美元找对零钱
how can i get the right change for $2.30 in change calculator program?
我编写了这个更改计算器,除了输入$2.30作为changeAmount
的值之外,其他一切都很好。我该怎么修?这是代码:
#include <iostream>
using namespace std;
int main()
{
double changeAmount;
int fives;
int ones;
int quarters;
int dimes;
int nickels;
int pennies;
cout <<"*** A Very Simple Change Machine ***" <<endl;
cout <<endl;
cout <<"Enter change amount --> ";
cin >>changeAmount;
cout <<"The change amount is $" <<changeAmount <<" ." <<endl;
cout <<endl;
if (changeAmount < 0)
{
cout << "Invalid amount." <<endl;
}
else
{
changeAmount = changeAmount * 100;
changeAmount = int(changeAmount);
fives = changeAmount / 500 ;
changeAmount -= fives * 500;
ones = changeAmount / 100 ;
changeAmount -= ones * 100;
quarters = changeAmount / 25;
changeAmount -= quarters * 25;
dimes = changeAmount / 10;
changeAmount -= dimes * 10;
nickels = changeAmount / 5;
changeAmount -= nickels * 5;
pennies = changeAmount / 1 ;
changeAmount -= pennies * 1;
cout <<"Your change is given as :" <<endl;
cout <<" $5 bill (s) : " <<fives <<endl;
cout <<" $1 bill (s) : " <<ones <<endl;
cout <<" quarter (s) : " <<quarters <<endl;
cout <<" dime (s) : " <<dimes <<endl;
cout <<" nickel (s) : " <<nickels <<endl;
cout <<" penny (ies) : " <<pennies <<endl;
}
return 0;
}
问题是您正在使用double对arithmetics
进行模运算。这并不可靠。您可以将changeAmount
的类型更改为int
以使示例工作。(您可能需要引入第二个变量来存储从输入中读取的双倍值。)
编译它,看看会发生什么:
changeAmount = changeAmount * 100;
cout <<"The change amount is $" <<changeAmount <<" ." <<endl; //230
changeAmount = int(changeAmount);
cout <<"The change amount is $" <<changeAmount <<" ." <<endl; //229
问题在于小数在系统中的存储方式。2.30存储为2.29…。当你乘以100并取整数部分时,你得到229。当乘以100时,请确保使用舍入函数进行舍入。请确保包含数学库。
else
{
changeAmount = round(changeAmount * 100);
changeAmount = int(changeAmount);
}
相关文章:
- regex_replace,为什么会损失1美元?
- 皮克斯美元LNK2019:未解析的外部交易品种
- 允许用户输入带或不带美元符号的金额
- 在 c++ 中将美元转换为美分
- 我创建了一个将雷亚尔转换为美元的程序,但浮点变量不正确
- c++:如何使用美元符号将双精度格式化为货币
- 将使用预处理器指令来定义美元符号表示的内容会导致任何冲突
- 子集总和(零钱)
- 把一个价格(例如89.95美元)读成一张双人床
- 读入美元金额(带美元符号)C++
- 将美元金额转换为字符串
- 转换 美元 为 欧盟.
- 将货币金额四舍五入到最接近的镍、四分之一、1 美元、5 美元等面额的最佳方法是什么?
- 美元符号在某种程度上与C++指针有关吗
- 我如何用c++将我的答案作为固定的十进制美元金额
- C++11是否允许在标识符中使用美元符号
- 如何在零钱计算器程序中花2.30美元找对零钱
- 计算给定零钱金额的硬币面额的程序
- C++提供最低零钱的计划不适用于最低面额
- 变量名中的美元符号