如何检查字符串变量的值是否为双精度
How to check if the value of string variable is 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”,方法 returns 为真。
当 ValueToTest 为 "NaN" 时,我得到的输出为 "NaN"。
在 C# 中它们都是“-∞”和 "NaN" 双精度值吗?
还有没有办法只检查实数 (https://en.wikipedia.org/wiki/Real_number) 并排除无穷大和 NaN?
是的,它们是 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;
}
"NaN"
和 "-∞"
是可解析为 double
的有效字符串。因此,如果您不希望它们被视为有效 double
值,则需要将它们过滤掉:
public static bool IsValidDouble(string ValueToTest)
{
return double.TryParse(ValueToTest, out double d) &&
!(double.IsNaN(d) || double.IsInfinity(d));
}
检查这个 Double 是否有无穷大和 inNan 检查,希望这会得到。
if (Double.IsInfinity(SampleVar))
{
//Put your logic here.
}
if (Double.IsNaN(SampleVar))
{
//Put your logic here.
}
我正在尝试检查字符串变量的值是否为双精度值。
我已经看到了这个现有问题 (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”,方法 returns 为真。
当 ValueToTest 为 "NaN" 时,我得到的输出为 "NaN"。
在 C# 中它们都是“-∞”和 "NaN" 双精度值吗?
还有没有办法只检查实数 (https://en.wikipedia.org/wiki/Real_number) 并排除无穷大和 NaN?
是的,它们是 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;
}
"NaN"
和 "-∞"
是可解析为 double
的有效字符串。因此,如果您不希望它们被视为有效 double
值,则需要将它们过滤掉:
public static bool IsValidDouble(string ValueToTest)
{
return double.TryParse(ValueToTest, out double d) &&
!(double.IsNaN(d) || double.IsInfinity(d));
}
检查这个 Double 是否有无穷大和 inNan 检查,希望这会得到。
if (Double.IsInfinity(SampleVar))
{
//Put your logic here.
}
if (Double.IsNaN(SampleVar))
{
//Put your logic here.
}