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

一般に、フロートをお金に使用することは決してありません。扱っている最小量に利用可能な最大の int 型を使用します (たとえば、cent には long int を使用します)。

于 2012-11-30T19:50:20.683 に答える
0

あなたの mIntHourlyCommission は int で 100 未満ですか?

于 2012-11-30T19:50:10.250 に答える