如何从c#双变量SqlDataReader中读取顺序为0.000e-6的十进制值

本文关键字:顺序 000e-6 十进制 读取 SqlDataReader 变量 | 更新日期: 2023-09-27 18:09:22

我正试图从我的DB读取一些十进制值。这些值的顺序是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);
}

如何从c#双变量SqlDataReader中读取顺序为0.000e-6的十进制值

尝试使用GetDouble(0)代替GetFloat(0)

我想你也需要编辑这一行:

Double [] rmseValues = null;

事实上,你试图把值在一个空对象作为解决方案,你需要初始化你的rmseValues数组或只是使用双List

Double[] rmseValues = new Double[10];

GetInt64(0)代替GetFloat(0)

为了不依赖于RDBMS实际的背景类型(例如,NUMBER(10, 3)或类似的)及其表示为。net类型(例如,Single),请执行转换:

  // rmseValues[0] should be Double
  rmseValues[0] = Convert.ToDouble(dataReader.GetValue(0));