我是C#的新手,我正在制作一个计算器,我想做一个简单的计算,但它无法正常工作。
以下是当前行:
Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));
以下是每个文本框中1.1的示例输出: 1.1 + 1.1 + 1.1 = 33
答案 0 :(得分:3)
问题是您没有在转化中指定文化。很可能你有德国文化(或其他一些欧洲文化),它使用点作为组分隔符,而不是小数点。结果是1.1
被解释为11
。
有两种解决方案:
1,1
(首选)使用不变文化解析数字:
Convert.ToString(
Convert.ToDouble(A.Text, CultureInfo.InvariantCulture) +
Convert.ToDouble(B.Text, CultureInfo.InvariantCulture) +
Convert.ToDouble(C.Text, CultureInfo.InvariantCulture),
CultureInfo.InvariantCulture)
首选方法是首选,因为它将确保用户始终可以在自己的文化中输入数字。强迫用户使用某种文化是20年前可以接受的,但现在还不是。
答案 1 :(得分:-1)
您需要计算总和,然后将这些部分一起添加。 String.Format是一种很好的连接字符串的方法。
double sum = Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text);
string resultStr = String.Format("{0}+{1}+{2}={3}", A.Text, B.Text, C.Text, sum);
答案 2 :(得分:-2)
您应首先将中间结果分配给双变量,然后将其放入字符串,即
double d = Double.Parse(A.Text) + Double.Parse(B.Text) + Double.Parse(C.Text);
最终你可以打电话
string result = d.ToString();
这更容易。
请参阅here。