【问题标题】:Input string was not in a correct format (Decimal to String)输入字符串的格式不正确(十进制到字符串)
【发布时间】:2011-01-19 22:10:50
【问题描述】:

我正在尝试将小数转换为我过去成功完成的字符串,但由于某种原因它决定现在不工作。我真的无法理解它,我在 SQL Management Studio 中将它设置为十进制并使用 linq 来传递它,但是由于人类未知的一些奇怪的原因,它认为它要求一个日期时间。

代码:

protected void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                tblTest t = new tblTest();

                t.tDecimal = Convert.ToDecimal(tbxDecimal.ToString());

                t.Add(t);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write(ex.Message);
            }
        }

有人可以帮我吗?

【问题讨论】:

  • tbxDecimal.ToString()的值是多少?

标签: c# .net linq-to-entities decimal


【解决方案1】:

首先,您应该始终使用 System.Decimal.TryParse() 而不是 Convert.ToDecimal()

其次,假设您使用某种形式的匈牙利符号,并且 tbx 在您的符号中表示“文本框”,那么您正在尝试转换文本框,而不是文本框中的文本。

而不是

tbxDecimal.ToString() 

你需要

tbxDecimal.Text.ToString() 

最后,您是否设置了一个断点以找出您要转换的值到底是什么?它可能与您的预期不同。

【讨论】:

  • Lmao 是的,我很笨,没看到那个...谢谢
  • 我收到此错误是因为我的十进制数字在负号和数字之间显示一个空格,例如 - 3.14 而不是 -3.14。
【解决方案2】:

可能是因为字符串使用点而不是逗号,或者相反。

【讨论】:

    【解决方案3】:

    也许是tbxDecimal.ToString()== string.Empty?如果字符串为空,Decimal.Parse 会抛出异常

    【讨论】:

      【解决方案4】:

      扩展 Fredrik 的回答:CultureInfo/Localization 是否不匹配?

      【讨论】:

        【解决方案5】:

        为什么你认为它是日期时间?你能发布实际的字符串吗?

        注意小数点分隔符 - '.'与','

        【讨论】:

          猜你喜欢
          • 2014-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多