如何从 C# 双变量中的 SqlDataReader 读取 0.000e-6 阶的十进制值
How to read a decimal value of order 0.000e-6 from a SqlDataReader in C# double variable
我正在尝试从我的数据库中读取一些十进制值。这些值是10-6的量级。我正在尝试使用如下代码将其读入 C# 中的 double
变量:数据库中的 sqltype 是 "float"。要读取的样本值为“1.99999999495049E-06” –
Double [] rmseValues = null;
while (dataReader.Read())
{
// This shows my datatype is float (sql)
string temp = dataReader.GetDataTypeName(0);
// This returns a value of "0"
string temp1 = dataReader.GetOrdinal("RmseAll").ToString();
// This throws exception of invalid typecast
rmseValues[0] = dataReader.GetFloat(0);
}
使用GetInt64(0)
代替GetFloat(0)
尝试使用 GetDouble(0)
而不是 GetFloat(0)
我认为您还需要编辑该行:
Double [] rmseValues = null;
事实上,您正试图将值放入空对象中作为解决方案,您需要初始化 rmseValues
数组或仅使用 List
的双精度
Double[] rmseValues = new Double[10];
为了不依赖于 RDBMS 实际 背景类型 (例如,NUMBER(10, 3)
或类似)及其作为 .Net 类型的表示(例如 Single
) 做一个转换:
// rmseValues[0] should be Double
rmseValues[0] = Convert.ToDouble(dataReader.GetValue(0));
我正在尝试从我的数据库中读取一些十进制值。这些值是10-6的量级。我正在尝试使用如下代码将其读入 C# 中的 double
变量:数据库中的 sqltype 是 "float"。要读取的样本值为“1.99999999495049E-06” –
Double [] rmseValues = null;
while (dataReader.Read())
{
// This shows my datatype is float (sql)
string temp = dataReader.GetDataTypeName(0);
// This returns a value of "0"
string temp1 = dataReader.GetOrdinal("RmseAll").ToString();
// This throws exception of invalid typecast
rmseValues[0] = dataReader.GetFloat(0);
}
使用GetInt64(0)
代替GetFloat(0)
尝试使用 GetDouble(0)
而不是 GetFloat(0)
我认为您还需要编辑该行:
Double [] rmseValues = null;
事实上,您正试图将值放入空对象中作为解决方案,您需要初始化 rmseValues
数组或仅使用 List
的双精度
Double[] rmseValues = new Double[10];
为了不依赖于 RDBMS 实际 背景类型 (例如,NUMBER(10, 3)
或类似)及其作为 .Net 类型的表示(例如 Single
) 做一个转换:
// rmseValues[0] should be Double
rmseValues[0] = Convert.ToDouble(dataReader.GetValue(0));