2014-10-07 61 views
0

我正在製作一個程序來取圓的半徑並輸出直徑,面積和圓周。我試圖從直徑開始,但我一直收到錯誤:不能隱式地將類型'double'轉換爲'string'。我已經使用整數完成了類似的程序,但我無法弄清楚我的生活,如何接收文本框中的浮點數並計算它們,以便輸出它們。這是我的代碼到目前爲止。不能將類型'double'隱含轉換爲'字符串'

<%@ Page Language="C#" %> 
<!DOCTYPE html> 
<script runat="server"> 
protected void Button1_Click(object sender, EventArgs e) 
{ 
double pi = 3.14159; 
lblDiameter.Text = (double.Parse(radius.Text)) * (double.Parse(radius.Text)); 
} 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<title>Circles</title> 
</head> 

<body> 
<form id="form1" runat="server"> 
    <div> 
    <asp:TextBox 
    id="radius" 
    Runat="server" /> 
    <br /> 

    <asp:Button 
    id="Button1" 
    Text="Calculate" 
    OnClick="Button1_Click" 
    Runat="server" /> 

    <asp:Label 
    id="lblDiameter" 
    Runat="server" /> 
</div> 
</form> 
</body> 
</html> 

我在哪裏出錯了?

+0

做'lblDiameter.Text =(等等等等)的ToString ();'。 – 2014-10-07 19:24:28

+0

提示:「(double.Parse(radius.Text))*(double.Parse(radius.Text))'的數據類型和'lblDiameter.Text'的數據類型是什麼,那麼爲什麼不能指定'雙'字符串'? – gunr2171 2014-10-07 19:24:33

回答

1

你可能只是缺少的ToString():

lblDiameter.Text = (double.Parse(radius.Text) * double.Parse(radius.Text)).ToString(); 

它會更清楚,你會避免解析字符串兩次通過存儲在一個局部變量的數量:

var value = double.Parse(radius.Text); 
lblDiameter.Text = (value * value).ToString(); 

現在,直徑是否真的等於半徑的平方? )

0

論的代碼lblDiameter.Text = (double.Parse(radius.Text)) * (double.Parse(radius.Text));

線的左手側lblDiameter.Text被認爲是一個串和右手邊是一個雙,因爲你解析的文本框的值到兩倍。

這裏是你應該做的:

double diameter = 0; 

diameter = double.Parse(radius.Text) * double.Parse(radius.Text); 

現在公式後,你可以將「直徑」來lblDiameter的價值,但你必須把它轉換爲字符串:

lblDiameter.Text = diameter.ToString(); 

如果您願意,您可以只使用2行代碼,如下所示:

double diameter = double.Parse(radius.Text) * double.Parse(radius.Text); 
lblDiameter.Text = diameter.ToString(); 
+0

如果您願意,您可以只使用2行代碼: – Auguste 2014-10-07 19:38:54

1

您正在收到錯誤,因爲e您正在處理等式右側的雙數據類型和左側的字符串。

更改代碼:

lblDiameter.Text = (double.Parse(radius.Text)) * (double.Parse(radius.Text)); 

要:

lblDiameter.Text = Convert.ToString((double.Parse(radius.Text)) * (double.Parse(radius.Text))); 

或:

lblDiameter.Text = (double.Parse(radius.Text) * (double.Parse(radius.Text)).ToString(); 

或:

double radius = double.Parse(textBox1.Text); 
lblDiameter.Text = (radius * radius).ToString(); 

你也不需要設置pi。數學命名空間中有一個常量。

double pi = Math.PI; 

我也建議設置一個半徑變再改用在我的例子做(double.Parse(radius.Text)各一次。就像上面的結束。

double radius = double.Parse(textBox1.Text); 

然後,你可以做這樣的事情:

lblDiameter.Text = Convert.ToString(radius * radius); 

和:

lblDiameter.Text = (radius * radius).ToString(); 

另外:

double circum = (2 * pi) * radius; 
相關問題