【发布时间】:2019-04-30 08:27:13
【问题描述】:
即使 SQL 的返回值是浮点数,在分配给浮点数时,我的 C# ExecuteScalar 命令也会从我的调用中抛出无效转换。于是我做了一个简单的测试如下:
sqlCU = "select cast(1 as float)";
using (SqlCommand command = new SqlCommand(sqlCU, con))
{
object cuP5300x = command.ExecuteScalar();
}
返回的总是双倍。
所以要修复它,我必须做一些我认为相当愚蠢的事情:
float cuP5300x = (float)((double)command.ExecuteScalar())
因为如前所述
float cuP5300x = (float)command.ExecuteScalar();
导致无效的强制转换异常。
谁能解释为什么,我在 MS 文档中找不到任何东西说浮点数是双精度的,有没有更明智的方法...?
谢谢。
【问题讨论】:
-
如果你使用
real而不是float会发生什么? -
或者你可以简单地使用
Convert.ToFloat(command.ExecuteScalar())并且不用担心返回的值类型。但是你仍然需要考虑 DbNull,尽管 -
谢谢,Convert 看起来比我的双重演员更好,但顺便说一句,它是 ToSingle 而不是 ToFloat :)
标签: c# sql-server