【发布时间】:2022-10-01 12:56:23
【问题描述】:
我有一个任务,用户输入一些钱,它应该给他们他们需要的钞票和硬币的数量,但我被困在存储零钱和获得所需的零钱数量上。
我遇到的问题是我知道我不能将硬币存储为整数,但如果我尝试将其存储为双精度数,则会出现错误,即 %mod 不能与双精度数一起使用。 有没有办法在计算完初始账单后提取剩余部分?带双
目前的情况是,如果我输入 456.56,我将得到 400 美元的钞票、2 个 20 美元、1 个 10 美元等,但 0.56 什么也没有
/*This program will convert the amount of money entered by the user into the amount of bills and change*/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
const int HUNDRED = 100;
const int TWENTY = 20;
const int TEN = 10;
const int FIVE = 5;
const int DOLLAR = 1;
const int QUARTER = 25;
const int DIME = 10;
const int NICKEL = 05;
const int PENNY = 01;
int changeAmount;
cout << \"Enter amount of money to convert: $\";
cin >> changeAmount;
cout << \"\\n\";
cout << \"Numbe of 100 dollar bills: \" << (int)changeAmount / HUNDRED << endl;
changeAmount = changeAmount % HUNDRED;
cout << \"Numbe of 20 dollar bills: \" << (int)changeAmount / TWENTY << endl;
changeAmount = changeAmount % TWENTY;
cout << \"Numbe of 10 dollar bills: \" << (int)changeAmount / TEN << endl;
changeAmount = changeAmount % TEN;
cout << \"Numbe of 5 dollar bills: \" << (int)changeAmount / FIVE << endl;
changeAmount = changeAmount % FIVE;
cout << \"Numbe of 1 dollar bills: \" << (int)changeAmount / DOLLAR << endl;
changeAmount = changeAmount % DOLLAR;
cout << \"Numbe of Quarters: \" << (int)changeAmount / QUARTER << endl;
changeAmount = changeAmount % QUARTER;
cout << \"Numbe of Dimes: \" << (int)changeAmount / DIME << endl;
changeAmount = changeAmount % DIME;
cout << \"Numbe of Nickles: \" << (int)changeAmount / NICKEL << endl;
changeAmount = changeAmount % NICKEL;
cout << \"Numbe of Pennies: \" << (int)changeAmount / PENNY << endl;
changeAmount = changeAmount % PENNY;
return 0;
}
-
int表示整数.您的cin >> changeAmount;不会读取.56,它只会读取整数. -
\" 我知道我不能将硬币存储为整数\" -- 谁告诉你的,这绝对不正确? 45656 是一个完美的整数,代表 456.56,它使显示的代码几乎可以正常工作,只是表面上的变化。您的工作包括简单地找出接受 \"456.56\" 输入的简单方法,并将其转换为 \"45656\",并保持其余显示的代码不变,这不是很明显吗?
-
但如果我尝试将它存储为双——你应该在整个项目中用便士工作。
456.56只是您要转换的内容的文本表示 - 然后您的目标是将456.56转换为45656的int值并使用它。 -
嗯,我从来没有这样看。但这完全有道理。我怀疑有更好的方法来做到这一点,因为如果这是一个数学问题,你可能会认为这是一场灾难。
-
const int PENNY = 01;请注意,以 0 开头的数字是八进制的。使用 01 不会伤害您,但如果您不想要八进制,最好不要使用它。
标签: c++