我是 C# 新手,我目前正在制作一个计算器,我想做一个简单的计算,但它不能正常工作。
这是当前行:
Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));
这是每个文本框中都有 1.1 的示例输出:1.1+1.1+1.1 = 33
我是 C# 新手,我目前正在制作一个计算器,我想做一个简单的计算,但它不能正常工作。
这是当前行:
Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));
这是每个文本框中都有 1.1 的示例输出:1.1+1.1+1.1 = 33
问题是您没有在转换中指定文化。很可能您有一种德国文化(或其他一些欧洲文化),它使用点作为组分隔符,而不是小数点。结果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 年前是可以接受的,但现在不行。
您需要计算总和,然后将这些部分相加。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);
您应该先将中间结果分配给双变量,然后将其放入字符串,即
double d = Double.Parse(A.Text) + Double.Parse(B.Text) + Double.Parse(C.Text);
最终你可以打电话
string result = d.ToString();
这要容易得多。
见这里。