是否有某种方法可以将未知数字转换成双倍?例如
public static double Foo(object obj)
{
if (!obj.GetType().IsValueType)
throw new ArgumentException("Argument should be a number", "obj");
return (double) obj;
}
private static void Main(string[] args)
{
double dbl = 10;
decimal dec = 10;
int i = 10;
short s = 10;
Foo(dbl);
Foo(dec);
Foo(i);
Foo(s);
}
但是当尝试将unbox打包为不正确的类型时,此代码会抛出异常。
答案 0 :(得分:9)
最简单的方法可能是使用Convert.ToDouble
。这为您进行转换,并使用数字类型string
和其他任何实现IConvertible
的(并且具有可以转换为double
的值)。
public static double Foo(object obj)
{
// you could include a check (IsValueType, or whatever) like you have now,
// but it's not generally necessary, and rejects things like valid strings
return Convert.ToDouble(obj);
}
答案 1 :(得分:0)
Convert.ToDouble
方法将指定值转换为双精度浮点数。
public static double Foo(object obj)
{
return Convert.ToDouble(obj);
}
答案 2 :(得分:0)
这是使用Double.TryParse()
:
public static double Foo(object obj)
{
double result;
if (double.TryParse(obj.ToString(), out result))
return result;
else throw new ArgumentException("Argument should be a number", "obj");
}