2014-10-07 113 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; 
相关问题