2012-05-04 18 views
2

我不能把它分成小數。它取值爲0.非常基本的劃分方程不工作在c#

private void button24_Click(object sender, EventArgs e) 
    { 
     double x = 0; 

     x = 1/2; 

     ans.Text = x.ToString(); 
    } 

當我調試時,x在發送到文本框「ans」之前爲零。

我tried..and字符串變量仍然是零..

double x = 1/5; 

string displayX = x.ToString("0.0000"); 

回答

6

這是integer division,而這些都是預期產出。

double x = 1.0/5; // this will not perform integer division 
double x = 1/5; // this does (1/5 = 0). 
double x = 1D/5; // this will not because 1 is treated as a double 
+1

我知道這會是簡單的大聲笑。有效。謝謝你,先生。 – dright

+0

我給這個答案一個'D'沒有給一個雙字的正確後綴。 –

+0

@ConradFrix:謝謝,但我實際上沒有使用任何後綴,所以在這個標準上,我失敗了(所以D太好了)。 –

1

用double x = 1.0/5替換double x = 1/5,並且應該修復它。因爲你要分割的兩個數字都是整數,所以它仍然將它作爲整數處理,而不是作爲整數。當你通過邏輯思考時,它是有道理的 - 它以這些數字的形式進行分割,然後將其保存到變量中;變量類型對於實際的方程是無關緊要的。

(我知道有其他的答案了,但希望這將幫助你明白爲什麼這個問題的存在。)

2

你可以做如下的一個:

double x = 1; 
double y = 1.5; 

double ans = x/y; 
+0

在這個例子中我看不到使用'Convert.ToDouble()'的價值。如果他們用整數代替x/y,它甚至會讓讀者感到困惑(就像OP所做的那樣)。 – payo

+1

@payo我更新了我的答案,你是對的。 – jacqijvv

+0

對評論的更新/編輯總是值得我在書中讚揚:) – payo