3

我是一名 Java 开发人员,我也刚刚开始自学 C++。我知道 Java 和 c++ 之间的一些区别,但我不确定这里发生了什么。这是我遇到问题的代码。它只是来自一个教程,所以我不担心准确性。

void calculateHourly() {
    float totalWeeklyWage = mFltHourlySalary * mIntHoursWorked;
    float totalSales = mIntCostOfShoe * mIntUnitsSold;
    float totalCommission = (mIntHourlyCommission / 100) * totalSales;
    float grandTotalWage = totalWeeklyWage + totalCommission;

    cout << "You will get $" << grandTotalWage << " for selling " << mIntUnitsSold << " shoes in a week."
        << endl;
}

问题是线路

float totalCommission = (mIntHourlyCommission / 100) * totalSales;

无论出于何种原因totalCommission = 0,当此方法完成运行时。我已经调试了这个和这个方法中的所有其他变量都等于它们应该等于的值。随着我的 Java 上限和我对 c++ 的一点了解告诉我这应该可以工作。

我是否在这种方法中遗漏了一些非常简单的东西,还是手头有更大的问题?非常感谢任何和所有帮助。

4

4 回答 4

6

100 被转换为 int 并四舍五入。

你需要使用

 float totalCommission = (mIntHourlyCommission / 100.) * totalSales;

或者

 float totalCommission = (mIntHourlyCommission / (float) 100) * totalSales;

而是直接将其转换为正确的类型。

于 2012-11-30T19:48:12.593 回答
5

以下使用整数除法,其结果也是整数:

mIntHourlyCommission / 100

要么mIntHourlyCommission转换为float,要么变成100文字float100.0f

于 2012-11-30T19:48:47.713 回答
0

您的 mIntHourlyCommission 是否为整数且小于 100?

于 2012-11-30T19:50:10.250 回答
0

一般来说,你永远不应该使用花车来赚钱。使用可用于处理的最小数量的最大 int 类型(例如 long int 表示美分)。

于 2012-11-30T19:50:20.683 回答