1

我是 C# 新手,我目前正在制作一个计算器,我想做一个简单的计算,但它不能正常工作。

这是当前行:

Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text));

这是每个文本框中都有 1.1 的示例输出:1.1+1.1+1.1 = 33

4

3 回答 3

3

问题是您没有在转换中指定文化。很可能您有一种德国文化(或其他一些欧洲文化),它使用点作为组分隔符,而不是小数点。结果1.1被解释为11

有两种解决方案:

  1. 在当前文化中输入您的数字:(1,1首选)
  2. 使用不变区域性解析数字:

    Convert.ToString(
        Convert.ToDouble(A.Text, CultureInfo.InvariantCulture) + 
        Convert.ToDouble(B.Text, CultureInfo.InvariantCulture) + 
        Convert.ToDouble(C.Text, CultureInfo.InvariantCulture),
        CultureInfo.InvariantCulture)
    

第一种方法是首选,因为它将确保用户始终可以输入自己文化中的数字。将某种文化强加给用户在 20 年前是可以接受的,但现在不行。

于 2013-02-19T10:59:22.213 回答
-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);
于 2013-02-19T10:59:37.850 回答
-2

您应该先将中间结果分配给双变量,然后将其放入字符串,即

double d = Double.Parse(A.Text) + Double.Parse(B.Text) + Double.Parse(C.Text);

最终你可以打电话

string result = d.ToString();

这要容易得多。

这里

于 2013-02-19T11:00:16.030 回答