使用Math with C++

Jas*_*sby 3 c++ math

我是一名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;
}
Run Code Online (Sandbox Code Playgroud)

问题是这条线

float totalCommission = (mIntHourlyCommission / 100) * totalSales;

无论出于何种原因totalCommission = 0,此方法运行完毕.我调试了这个,这个方法中的所有其他变量都等于它们应该等于的内容.随着我的Java上限以及我对c ++的一点知识告诉我这应该有效.

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

cou*_*nt0 6

100被转换为int和圆形.

你需要使用

 float totalCommission = (mIntHourlyCommission / 100.) * totalSales;
Run Code Online (Sandbox Code Playgroud)

要么

 float totalCommission = (mIntHourlyCommission / (float) 100) * totalSales;
Run Code Online (Sandbox Code Playgroud)

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


NPE*_*NPE 5

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

mIntHourlyCommission / 100
Run Code Online (Sandbox Code Playgroud)

无论是投mIntHourlyCommissionfloat,或转100float文字:100.0f.