问题描述
我正在尝试获取类型为 REAL 的特定列的值,并希望将其保存在 double 或 float 中。 >
问题是,到目前为止我尝试过的所有方法要么只返回一个整数,要么出现错误:指定的强制转换无效。例如,如果数据库中的值是 1,99,我会得到 1。调试器说它仍然是 double 类型。
我尝试过的:
public static void GetDouble()
{
SQLiteConnection databaseConnection = new SQLiteConnection($"Data Source=.\\val.sqlite;Version=3;");
SQLiteCommand sqlCommand = databaseConnection.CreateCommand();
sqlCommand.CommandText = $"SELECT * FROM doubles";
databaseConnection.Open();
SQLiteDataReader sqlReader = sqlCommand.ExecuteReader();
while (sqlReader.Read())
{
// expected values: 1,1 | 8,66 | 0,64 | 0,82 | 1,9 | 0,89 | 0,52 | 1,35 | 4,32 | 1,66
double nbr = (double)System.Convert.ToDouble(sqlReader["KDRatio"]); // gives me: 1 | 8 | 0 | 0 | 1 | 0 | 0 | 1 | 4 | 1
// double nbr = sqlReader.GetDouble(sqlReader.GetOrdinal("KDRatio")); // specified cast is not valid
// double nbr = sqlReader.GetDouble(5); // specified cast is not valid
// double nbr = (double)sqlReader["KDRatio"]; // gives me: 1 | 8 | 0 | 0 | 1 | 0 | 0 | 1 | 4 | 1
// float nbr = (float)sqlReader["KDRatio"]; // specified cast is not valid
// float nbr = (float)System.Convert.ToDouble(sqlReader["KDRatio"]); // gives me: 1 | 8 | 0 | 0 | 1 | 0 | 0 | 1 | 4 | 1
// string nbr = ((double)sqlReader.GetDouble(5)).ToString("#,#",CultureInfo.InvariantCulture); // specified cast is not valid
System.Console.WriteLine(nbr);
}
databaseConnection.Close();
}
我实际上尝试了很多组合,但都没有奏效。 我期待
double nbr = (double)System.Convert.ToDouble(sqlReader["KDRatio"]);
工作,因为在其他方法中我收到不同的值,例如
Name = sqlReader["Name"].ToString()
OnlineTimeMinutes = System.Convert.ToInt32(sqlReader["OnlineTimeMinutes"])
但是双打似乎给我带来了很多麻烦。
那么我怎样才能得到两位小数的正确值呢?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)