Pre*_*eli 5 c# comparison numeric
我有一个函数,它接受两个参数,如果它们相等则返回 true,如果不相等则返回 false:
private bool isequal(object a, object b)
{
if (a != null)
return a.Equals(b);
if (b != null)
return b.Equals(a);
//if (a == null && b == null)
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在我想扩展这个功能。如果 a 和 b 是 2 个相同的数字但类型不同,它也应该返回 true。
例如:
int a = 15;
double b = 15;
if (isequal(a,b)) //should be true; right now it's false
{ //...
}
Run Code Online (Sandbox Code Playgroud)
我已经找到了一个类似的问题(带有答案)比较 double 和 int 的最佳方法,但 a 和 b 可以是任何类型的数字或数字以外的其他数字。如何检查 a 和 b 是否是数字?我希望有一种比检查 .net 的所有现有数字类型(Int32、Int16、Int64、UInt32、Double、Decimal,...)更好的方法
// update:我设法编写了一个效果很好的方法。但是,十进制类型的数字可能存在一些问题(尚未测试)。但它适用于所有其他数字类型(包括大量 Int64 或 UInt64)。如果有人感兴趣:数字相等的代码
您可以在 a 和 b 上使用 Double.TryParse。它将处理 int、long 等。
private bool isequal(object a, object b)
{
if (a == null || b == null)
return (a == b);
double da, db;
if (Double.TryParse(a.ToString(), out da) && Double.TryParse(b.ToString(), out db))
return YourIsDoubleEqualEnough(da, db);
return false;
}
Run Code Online (Sandbox Code Playgroud)