【问题标题】:Regex decimal to int正则表达式十进制到 int
【发布时间】:2016-11-23 13:12:16
【问题描述】:

我正在尝试从文本框中读取十进制数并将其转换为 int 以进行计算。

字符串看起来像这样 +0.003_mm。 基于正则表达式在线工具,我捕获十进制数的模式应如下所示“d*(\d+.\d+”,结果为 0.003

在测试此即时消息时,我试图在名为“mtw_textbox”的文本框中显示 0.003,这就是为什么我最后将其转换为字符串的原因。

我已经尝试过这种方式,也作为“mittelwert1”的 Int32 进行了尝试,但我收到一条错误消息,指出“Int mittelwert1 = Convert.ToInt32(mtw1.Value);”的格式错误

我做错了什么?

       private void button1_Click_1(object sender, EventArgs e)
    {
        Regex regex = new Regex(@"d*(\d+\.\d+)");
        Match mtw1 = regex.Match(mw1_textbox.Text);

        if (mtw1.Success) { 
        Int mittelwert1 = Convert.ToInt32(mtw1.Value);
        string testen = mittelwert1.ToString();

【问题讨论】:

  • "0.003" 不是整数(而是小数、浮点数或双精度数)

标签: c# regex


【解决方案1】:

将“0.003”转换为整数会抛出这个异常。这是因为 0.003 不是整数。尝试转换为任何浮点数,例如浮点数、双精度数或十进制数:

double mittelwert1 = Convert.ToDouble(mtw1.Value);

【讨论】:

  • 哎呀,现在它正在工作,这对我来说有点愚蠢。没想到哈哈
  • hm 问题现在已解决,但还不是正确的。我没有正确理解逗号。例如,在 0.003 上,它只向我显示 3。在像 1,03 这样的数字上,它显示 103。测试网站向我显示了带有标题的逗号,所以应该是对的?转换过程中逗号会丢失吗?
  • 您可能遇到了本地化问题 - 尝试将 currentculture = invariantCulture 参数添加到转换中(在某些文化中,小数分隔符不是点)。如果它没有帮助,请随时将其作为另一个问题发布在 SO :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
相关资源
最近更新 更多