2013-09-27 28 views
-8

我有下面的代码来计算百分比在perst,但是当我运行这个代码时,我总是得到o作为值的所有值的qxount和acount的值。C#错误除以两个整数

int perst; 
int qcount; 
int acount; 

perst = (acount/qcount) * 100; 
+2

你不能被零除。 –

+0

除以100之前的乘以100,这只是一个整数路由问题 – AlexH

+2

要展开,这些变量尚未初始化,并且默认值为0. – MikeTheLiar

回答

3

当分割整数时,结果将是一个整数。这意味着你期望的值是0.75(你似乎认为你会乘以100来得到一个百分比),那么返回的整数值将只是0,这是前导整数。其余的将与%模量运算符一起提供。

但是,得到像你似乎想要的百分比,你需要使用双打或浮点值进行分割。

double perst; 
double qcount; 
double acount; 

perst = (acount/qcount) * 100; 

有关除法运算符的MSDN文章 - Good idea to read

+1

他有几个问题的后/代码在他到达这一点之前需要加以解决。 – Servy

+0

@Servy:同意,但我的假设是他只是略去了一些可以外推的实施细节。在阅读他的问题时,我的想法让我相信OP对整数分解的工作有一个基本的误解。我的回答是铭记在心。也许我应该在这个培训中加上一个好文件的链接。 –

+1

无论如何,最好是帮助OP将问题修复到足够的质量,以至于您不需要*猜测问题是什么,特别是当有多个可能的候选人时。 – Servy

0

我认为你有一些整数舍入问题。尝试这样的事情。

int perst; 
int qcount = 100; 
int acount = 5; 

perst = Convert.ToInt32(((double)acount/(double)qcount) * 100); 
0

虽然四舍五入几乎可以肯定是错误以下工作就好了(分配值的变量后):

int a = 62; 
int b = 235; 
int percentage = 100*a/b; 
Console.WriteLine(percentage); 

你并不需要使用双打。这将百分比调整为零。如果您需要更精确的结果,请使用双或单。

+0

更准确地说,这个过程“占据”百分比。 '26.9%'仍然只有'26%'。 –