-2

重複の可能性:
除算がゼロを返す
単純な計算が何らかの理由で機能しない

どうしてこれなの:

int prozent = (totalkcals / 2000) * 100;

0を返しますか?

この場合、totalkcals は 567 です。再確認しました。

4

4 に答える 4

6

これは整数除算によるものです

除算は結果をゼロに向けて丸め、結果の絶対値は、2 つのオペランドの商の絶対値よりも小さい可能な最大の整数です。2 つのオペランドの符号が同じ場合、結果はゼロまたは正になり、2 つのオペランドの符号が反対の場合、結果はゼロまたは負になります。

于 2012-09-11T14:37:55.963 に答える
3

その原因は整数除算です。

double prozent = ((double)totalkcals / 2000) * 100;
于 2012-09-11T14:38:06.217 に答える
2

567 / 2000 = 0.2835、int にキャストすると (データ型で指定)、ゼロになります。0 * 100 = 0。

そう: double prozent = ((double)totalcals / 2000.0) * 100.0;

于 2012-09-11T14:39:38.977 に答える
1

これは整数計算であるため、(totalkcals / 2000) からの演算は 0 を返します。

于 2012-09-11T14:38:58.230 に答える