如何检查字符串变量的值是否为double

时间:2018-01-12 14:41:35

标签: c# string double real-number

我正在尝试检查字符串变量的值是否为double。

我已经看到了这个现有的问题(Checking if a variable is of data type double)和它的答案,它们很棒,但我有一个不同的问题。

public static bool IsDouble(string ValueToTest) 
    {
            double Test;
            bool OutPut;
            OutPut = double.TryParse(ValueToTest, out Test);
            return OutPut;
    }

从上面的代码中,当ValueToTest为“-∞”时,我在变量Test中得到的输出为“-Infinity”,方法返回true。

当ValueToTest为“NaN”时,我得到的输出是“NaN”。

它们在C#中都是“-∞”和“NaN”双值吗?

还有办法检查实数(https://en.wikipedia.org/wiki/Real_number)并排除无穷大和NaN吗?

3 个答案:

答案 0 :(得分:3)

是的,它们是double的有效值:请参阅documentation

只需更新您的方法,即可在NaNInfinity上添加支票:

public static bool IsDoubleRealNumber(string valueToTest)
{
    if (double.TryParse(valueToTest, out double d) && !Double.IsNaN(d) && !Double.IsInfinity(d))
    {
        return true;
    }

    return false;
}

答案 1 :(得分:2)

"NaN""-∞"是可解析为double的有效字符串。因此,如果您不希望将它们视为有效double值,则需要对其进行过滤:

public static bool IsValidDouble(string ValueToTest)
{
    return double.TryParse(ValueToTest, out double d) && 
           !(double.IsNaN(d) || double.IsInfinity(d));
}

答案 2 :(得分:0)

检查这个Double有无限和innan检查,希望这会得到。

 if (Double.IsInfinity(SampleVar))
{
  //Put your  logic here.
}
if (Double.IsNaN(SampleVar))
{
  //Put your  logic here.
}