This question already has answers here:
Fastest Way for Converting an Object to Double?
(5个答案)
2年前关闭。
我的代码将从各种数值类型的各种来源中获取大量数据,这些数据都以类型
我想做一些简单的事情,但这不起作用:
知道
(5个答案)
2年前关闭。
我的代码将从各种数值类型的各种来源中获取大量数据,这些数据都以类型
object
的形式到达,并且为了易于使用,我想将其全部转换为double
(足以代表输入数据的全部范围,并且不需要极高的精度)。我当然可以解决这个问题,但是我的解决方案似乎很笨拙:List<object> list = new List<object>();
list.Add((int)42);
list.Add((short)42);
list.Add((float)42.1);
list.Add((double)42.1);
list.Add((decimal)42.1);
foreach (object valObj in list)
{
Type objType = valObj.GetType();
double value;
if (objType == typeof(int)) { value = (double)(int)valObj; }
else if (objType == typeof(short)) { value = (double)(short)valObj; }
else if (objType == typeof(float)) { value = (double)(float)valObj; }
else if (objType == typeof(double)) { value = (double)valObj; }
else if (objType == typeof(decimal)) { value = (double)(decimal)valObj; }
else throw new Exception("Unexpected type");
Console.WriteLine("Value: " + value);
}
我想做一些简单的事情,但这不起作用:
List<object> list = new List<object>();
list.Add((int)42);
list.Add((short)42);
list.Add((float)42.1);
list.Add((double)42.1);
list.Add((decimal)42.1);
foreach (object valObj in list)
{
double value = (double)valObj; // <--- exception of type 'System.InvalidCastException'
Console.WriteLine("Value: " + value);
}
知道
list
中的所有数据都是可以合法地转换为double
的数值类型,如何在不首先将double
转换为任何类型的情况下将它们转换为valObj
? 最佳答案
您可以使用Convert.ToDouble()
。
foreach (object valObj in list)
{
double value = Convert.ToDouble(valObj);
Console.WriteLine("Value: " + value);
}
Convert.ToDouble()
有很多重载,它们可以采用以下任何一种数据类型,bool
byte
char
DateTime
decimal
double
float
int
long
object
sbyte
short
string
uint
ulong
ushort
关于c# - 如何将各种未知数字类型转换为 double ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43501237/