【问题标题】:I get a FormatException when I'm trying to parse a Double尝试解析 Double 时收到 FormatException
【发布时间】:2014-05-19 12:47:18
【问题描述】:

我正在开发一个 Windows 8 应用程序。我有一个列表框,显示单击的项目的特定内容(SelectedIndex)。

根据不同文本框中显示的文本,我为一个类创建了一个新实例,该类获取信息并将其放入对象中。从那个对象中,我将不同的对象信息放入双变量中,我可以使用“toString()”方法在屏幕上输出。每次我想向列表中“添加”一些东西时,我都希望数字相乘,而不是文本字符串彼此相加,例如:

 totalWeight += double.Parse(tbx_TotalVikt.Text);

在这里,我希望 totalWeight(wich is a double) 是 tbx_TotalVikt.Text 中文本的解析版本。但我不断收到此错误消息:

在 mscorlib.dll 中出现“System.FormatException”类型的异常,但未在用户代码中处理

附加信息:输入字符串的格式不正确。

【问题讨论】:

  • 您尝试解析的输入是什么?
  • 我有一个“双重体重”;每当我添加到文本框文本时,我都想添加它。我正在尝试将 tbx_TotalVikt.Text 中的值解析为双精度值,以便我可以添加到该值中,现在它只是作为字符串添加,上面的代码给了我一条错误消息..
  • "双倍重量;"绝对不是一个数字。 martennis 正在尝试在调用 Parse 时确定 tbx_TotalVikt.Text
  • 值是一个数字,例如:355。我试图在 textbox.text 中解析一个字符串数字。
  • 在调试模式下,tbx_TotalVikt.Text 有什么价值?也许它没有您期望的价值?

标签: c# xaml windows-8


【解决方案1】:

最好在解析数字时提供格式提供程序作为第二个参数。

double.Parse("1.254", CultureInfo.InvariantCulture.NumberFormat)

如果您确定这不是问题所在,那么您正在向Parse 方法提供垃圾,并且应该在调试器中调查您的输入。

【讨论】:

    【解决方案2】:

    我修好了。

    double item = 0;
    if(double.TryParse(tbx_TotalVikt.Text, out item))
                {
                    totalWeight += item;
                }
    tbx_TotalVikt.Text = totalWeight.ToString();
    

    使用 TryParse 查看文本是否为双精度文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      相关资源
      最近更新 更多