如何判断字符串变量值为C# double类型?求排除无穷与NaN的方法
嘿,我来给你捋清楚这两个问题哈!
关于"-∞"和"NaN"是否属于double类型
在C#里,这俩确实是double类型的合法值哦!因为.NET里的double遵循IEEE 754浮点标准,这个标准里特意定义了正无穷、负无穷以及NaN(非数字)这些特殊值,它们都是double类型的一部分,所以你用double.TryParse解析"-∞"和"NaN"会返回true,完全符合预期。
如何仅检查有限实数(排除无穷和NaN)
要实现这个需求很简单,你只需要在TryParse成功之后,再用double.IsFinite()方法判断解析出来的数值是不是有限的就可以了。这个方法会在数值既不是无穷大/无穷小,也不是NaN的时候返回true,正好符合你要的“仅实数”的要求。
修改后的代码示例如下:
public static bool IsFiniteRealNumber(string ValueToTest) { if (double.TryParse(ValueToTest, out double testValue)) { // 判断是否为有限实数 return double.IsFinite(testValue); } // 解析失败直接返回false return false; }
这样一来,当输入是"-∞"、"∞"或者"NaN"的时候,虽然TryParse能成功,但double.IsFinite会返回false,最终方法就会返回false,完美排除这些特殊值;而普通的有限实数(比如"3.14"、"-25.6"这类)就会正常返回true。
内容的提问来源于stack exchange,提问作者Chimebuka Okwuokenye
相关产品推荐
相关产品推荐

