我正在尝试检查字符串变量的值是否为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吗?
答案 0 :(得分:3)
是的,它们是double
的有效值:请参阅documentation。
只需更新您的方法,即可在NaN
和Infinity
上添加支票:
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.
}