有人可以在此代码中找到错误

Could some one find the error in this code?

本文关键字:错误 代码      更新时间:2023-10-16

我已经编写了此程序,当我运行它并输入20.14时,这是输出:

输入金额:20.14更改应得:

20美元0季度1角0镍3便士

应该是4便士。但这显示了3。这是另一个输出:

输入金额:79.58更改应得:

79美元2季度0角1个镍3便士

但由于某种原因,在这里对其进行了正确的计算。

有人可以帮助我找到错误吗?预先感谢。

这是代码:

//Description: This program takes in a dollar amount from the user and
//and calculates and displays how to make the change using the smallest
//number of bills and coins possible.
#include <iostream>
using namespace std;
int main()
{
    //Declaring the variables.
    //dollarAmount is the amount that will be input by the user, which
    //will be split into dollars, quarters, dimes, nickels, pennies.
    float dollarAmount;
    int dollars = 0, quarters = 0, dimes = 0, nickels = 0, pennies = 0;
    //Displaying message to user to input value for dollarAmount.
    cout << "Enter the amount: ";
    //Taking in the value for dollarAmount.
    cin >> dollarAmount;
    //Splitting the dollarAmount into dollars, quarters, dimes,
    //nickels and pennies.
    pennies = dollarAmount * 100.0;
    dollars = pennies / 100;
    pennies = pennies % 100;
    quarters = pennies / 25;
    pennies = pennies % 25;
    dimes = pennies / 10;
    pennies = pennies % 10;
    nickels = pennies / 5;
    pennies = pennies % 5;


    //Displaying a message to the user with desired output
    cout << "Change Due:nn";
    cout << dollars << " dollarsn";
    cout << quarters << " quartersn";
    cout << dimes << " dimesn";
    cout << nickels << " nickelsn";
    cout << pennies << " penniesn";

    return 0;
}

您必须使用<cmath>中包含的std::fmod才能计算浮点数的浮点数。