C++的基本现金系统

Basic cash system in C++

本文关键字:现金 系统 C++      更新时间:2023-10-16

在下面的代码中,我有一些错误,我不知道为什么它不起作用。

我用fmod做小数,但我在给你 0.10 和 0.05 $ 的部分遇到了一些错误,而且大多数时候我从来没有得到我应该回馈的好金额如果有的话。

#include<iostream>
#include <cmath>
using namespace std;
int main() 
{
int iAmount_due = { 0 };
int iGiven_money = { 0 };
int iMoney_back;
iMoney_back = iGiven_money - iAmount_due;

cout << "Enter the amount due please: " << endl;
cin >> iAmount_due;
cout << "Enter the amount given please: " << endl;
cin >> iGiven_money;

if (iGiven_money >= iAmount_due) {
iMoney_back = iGiven_money - iAmount_due;
cout << "We will give you : " << iMoney_back << " $ back" << endl;
}
else {
cout << "No money back" << endl;
}

if (iMoney_back >= 100) {
cout << "You will receive: " << iMoney_back % 100 << " x 100$" << endl;
}
else {
cout << "No 100$ bill" << endl;
}

if (iMoney_back >= 50) {
cout << "You will receive: " << iMoney_back % 50 << " x 50$" << endl;
}
else {
cout << "No 50$ bill" << endl;
}

if (iMoney_back >= 20) {
cout << "You will receive: " << iMoney_back % 20 << " x 20$" << endl;
}
else {
cout << "No 20$ bill" << endl;
}

if (iMoney_back >= 10) {
cout << "You will receive: " << iMoney_back % 10 << " x 10$" << endl;
}
else {
cout << "No 10$ bill" << endl;
}

if (iMoney_back >= 5) {
cout << "You will receive: " << iMoney_back %  5  << " x 5$" << endl;
}
else {
cout << "No 5$ bill" << endl;
}

if (iMoney_back >= 0.25) {
cout << "You will receive: " << fmod (iMoney_back, 0.25) << " x 0.25$ " << endl;
}
else {
cout << "No 0.25$ " << endl;
}

if (iMoney_back >= 0.10) {
cout << "You will receive: " << fmod (iMoney_back, 0.10) << " x 0.10$ " << endl;
}
else {
cout << "No 0.10$ " << endl;
}

if (iMoney_back >= 0.05) {
cout << "You will receive: " << fmod (iMoney_back, 0.05) << " x 0.05$ " << endl;
}

else {
cout << "No 0.05$ " << endl;
}

return 0;
}

int仅包含整数值。0.05不是整数值。您可能会想改用可能适用于您简单问题的double值;但是,它们通常具有舍入误差,这是您真正不希望货币值出现的情况。

更好的解决方案是仍然使用整数。您需要将1定义为可能的最小单位(例如 1 美分(,这意味着您的所有值都将以美分为单位。您需要编写额外的代码才能输入值并将其显示为美元而不是美分。