【问题标题】:How to check if an object is numeric in C#如何在C#中检查对象是否为数字
【发布时间】:2015-04-05 23:05:53
【问题描述】:

我正在尝试检查对象是否为数字。

下面的 IsNumeric 函数大部分时间都可以工作,除非我传递 "NaN"

的值

所以我有这个:

    private void button1_Click(object sender, EventArgs e)
    {
        object obj = "NaN";

        bool check = IsNumeric(obj);

        if (check)
        {
            MessageBox.Show(obj.ToString() + " is a number");
        }


    }

    public bool IsNumeric(object Expression)
    {
        bool isNum;
        double retNum;
        isNum = Double.TryParse(Convert.ToString(Expression), out retNum);
        return isNum;
    }

但是 IsNumeric 函数返回 "true" 这是一个谎言。

我在这里找到了 IsNumeric 函数的建议: How do I identify if a string is a number?

如何检查对象是否为数字?

【问题讨论】:

  • 你熟悉TypeOf of GetType()
  • Byte[] 是不是数字?
  • msdn.microsoft.com/en-us/library/… Object.GetType() 这是 C# 中的东西
  • @Pabinator,我很困惑您是否有要检查的未知类型的对象(如您的描述所示),或者您是否有要检查的字符串值(正如您的代码所建议的那样)。
  • 这些数字中的任何一个:“seven”、“pi”、“XLII”、“0xDeadBeef”、“1993 年英国的 GDP”、“sqrt(-1)”、“i” 、“e”、“6.02e23”、“2^128”、“1 兆吨 TNT 以克质量缺陷计”、“生命、宇宙和一切终极问题的答案”?也许有一个WolframAlpha API 会有所帮助。

标签: c#


【解决方案1】:

如果您不介意添加对 VB 库的引用,您可以使用:

Microsoft.VisualBasic.Information.IsNumeric(expression)

【讨论】:

    【解决方案2】:

    如果你唯一的问题是“NaN”,那么试试这个:isNum = Double.TryParse(Convert.ToString(Expression), out retNum) && !Double.IsNaN(retNum);

    顺便说一句,“Infinity”和“-Infinity”也将是数字。

    【讨论】:

      猜你喜欢
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 2017-06-22
      相关资源
      最近更新 更多