【问题标题】:Exception when using Convert.ToDouble使用 Convert.ToDouble 时的异常
【发布时间】:2015-09-12 05:48:28
【问题描述】:

我正在制作一个库存程序,要求用户输入他们想购买的不同数量的不同物品。我使用这一行将项目数转换为双精度数,以便我可以计算,但我收到一条错误消息,指出我有一个未处理的格式异常,输入字符串的格式不正确。有什么我遗漏的吗?

itembatteries = Convert.ToDouble(txtNumberofBatteries.Text);

【问题讨论】:

  • Convert.ToDouble 如果输入字符串的格式不正确,无法转换为双精度值。正确的格式取决于您的语言环境设置 使用 double.TryParse 代替。顺便说一句,这一切都写在 MSDN 上,在问这里之前做一点搜索总是最好的路径
  • 导致它的字符串是什么?如果它不是双重的,那就是原因。
  • 你在文本框中输入了什么?此外,根据您的文本框名称,您可能希望将其转换为 int 而不是 double,因为很难有半块电池。
  • @DaveZych 让我想起了《辛普森一家》的那一集,荷马把 D 电池变成了 AAA :)
  • 好吧,价格实际上应该是decimal,而不是double,我不确定为什么有美分的价格会影响电池数量?您希望有人能够输入 2.3 电池吗?

标签: c#


【解决方案1】:

您可以尝试改用double.TryParse。如果 txtNumberofBatteries.Text 不是双精度的有效字符串表示,这将停止异常。

例如:

double itembatteries;
if (double.TryParse(txtNumberofBatteries.Text, out itembatteries))
{
    //Something with itembatteries
}
else
{
    //Show Error: you didn't type a number
}

【讨论】:

  • 这将抑制来自 Convert.ToDouble 的错误,但它不会帮助 OP 将 TextBox.Text 变成双精度。
  • 怎么样,itembatteries 会包含文本框中的值?
  • 那么为什么 Convert.ToDouble(txtNumberofBatteries.Text) 不起作用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
相关资源
最近更新 更多