重複の可能性:
除算がゼロを返す
単純な計算が何らかの理由で機能しない
どうしてこれなの:
int prozent = (totalkcals / 2000) * 100;
0を返しますか?
この場合、totalkcals は 567 です。再確認しました。
重複の可能性:
除算がゼロを返す
単純な計算が何らかの理由で機能しない
どうしてこれなの:
int prozent = (totalkcals / 2000) * 100;
0を返しますか?
この場合、totalkcals は 567 です。再確認しました。
これは整数除算によるものです
除算は結果をゼロに向けて丸め、結果の絶対値は、2 つのオペランドの商の絶対値よりも小さい可能な最大の整数です。2 つのオペランドの符号が同じ場合、結果はゼロまたは正になり、2 つのオペランドの符号が反対の場合、結果はゼロまたは負になります。
その原因は整数除算です。
double prozent = ((double)totalkcals / 2000) * 100;
567 / 2000 = 0.2835、int にキャストすると (データ型で指定)、ゼロになります。0 * 100 = 0。
そう: double prozent = ((double)totalcals / 2000.0) * 100.0;
これは整数計算であるため、(totalkcals / 2000) からの演算は 0 を返します。