2013-09-27 47 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%'。 –