将double转换为字符串1

时间:2013-02-19 10:55:26

标签: c#

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

以下是当前行:

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

以下是每个文本框中1.1的示例输出: 1.1 + 1.1 + 1.1 = 33

3 个答案:

答案 0 :(得分: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)
    
  3. 首选方法是首选,因为它将确保用户始终可以在自己的文化中输入数字。强迫用户使用某种文化是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