找到一个整数到另一个整数的百分比
问题描述:
我有两个整数(两个文件的字节数)。如果不是一样的话,它总是比较小。我想计算较小的百分比。找到一个整数到另一个整数的百分比
我用我已经应用了数学公式平原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