C ++中的双打分区

时间:2014-08-03 21:03:27

标签: c++ double division

我在一个简单的程序中对双打的分工有点麻烦我正在努力,我似乎​​无法弄清楚我哪里出错了。我怀疑它与C ++处理浮点或算法的划分方式有关。

波纹管摘要表示接受物品购买金额以及客户支付的金额。然后,该计划必须采取剩余的更改并将其分配到各种票据/账单金额(例如10美元,5美元)以及剩余的美分。我已将这些音符值放在数组中。

#include <iostream>
using namespace std;

int main()
{   
    double purchAmount, payAmount, change;
    int div;
    const int arrSize = 8;
    float arrBills[arrSize] = {10, 5, 1, 0.5, 0.2, 0.1, 0.05, 0.01};

    cout << "Input Total Purchase Amount:";
    cin >> purchAmount;
    cout << "Input Total Amount Submitted:";
    cin >> payAmount;
    change = payAmount - purchAmount;

    if (change<0)
    {
        cout << "Customer under-payed!";
    }

    else {
        for (int i=0; i<arrSize; i++)
        {
            div = change/arrBills[i];
            change = change - arrBills[i]*div;
            cout << div << " " << arrBills[i] << "$ Bills" << endl;
        }
    }


    return 0;
}

我遇到的问题是,尽管每个音符值都正确,但最后一分(0.01)的结果总是低于应有的值。

以下是一个示例输出,说明了这一点:

Input Total Purchase Amount:100
Input Total Amount Submitted:116.67
1 10$ Bills
1 5$ Bills
1 1$ Bills
1 0.5$ Bills
0 0.2$ Bills
1 0.1$ Bills
1 0.05$ Bills
1 0.01$ Bills

0 个答案:

没有答案