我有兩個整數(兩個文件的字節數)。如果不是一樣的話,它總是比較小。我想計算較小的百分比。找到一個整數到另一個整數的百分比
我用我已經應用了數學公式平原C.,但我總是得到0:
printf("%d\r", (current/total)*100);
任何想法?
我有兩個整數(兩個文件的字節數)。如果不是一樣的話,它總是比較小。我想計算較小的百分比。找到一個整數到另一個整數的百分比
我用我已經應用了數學公式平原C.,但我總是得到0:
printf("%d\r", (current/total)*100);
任何想法?
嘗試
printf("%g\r", (((double)current)/total)*100);
代替。整數除法總是趨向於零。首先將其中一個數字轉換爲double
,您將觸發浮點除法。如果你想使用整數算術,你也可以使用
printf("%d\r", (100*current)/total);
這將打印向下舍入到下一個整數的百分比。
更好的嘗試:
printf("%lf\r", (((double)current)/total)*100);
因爲答案將在浮點。
斯文給你提供了很好的建議。
如果你想讓你的整數,做乘法除法之前:
printf("%d\r", (current * 100)/total);
你會得到一個四捨五入的結果。
與numerator < denominator
完成的積分除法總是給出0.這就是對「永遠爲0」問題的解釋。將讓您的劃分(百分比)
MY2C的組成部分之前乘以100
我建議這樣做除法之前擴大提名者:
const float ratio = (100.f * current)/total;
這裏,使100浮點文字會促進計算,因此不需要明確的演員表演也是一種好處。
整數除法幾輪下來,所以如果你的答案是小於1,你將會獲得0
你可以嘗試這樣的:
printf("%d\r", ((current*100)/total));
但是你總是會得到一個整數。
如果你將一個分子轉換爲一個浮點數,你將得到浮點除法和正確的答案。
printf("%f\r", ((float)current/total * 100));
然而,你可能想後截斷爲零,例如,在小數點前3位和2可以使用後:
printf("%3.2f\r", ((float)current/total * 100));
退房:
謝謝,你在第二個例子中有一個額外的括號;)。 – 2011-02-04 16:25:12