我试图从SQL视图中获取real
号码。
但在执行查询后,它会将数字从6728873.3
四舍五入到6728873.5
为什么会发生这种情况,有什么方法吗?
我尝试使用DataReader
,Linq2SQL
和ServiceStack.ORMLite获取数据,但这些数据都不起作用。
var lConnection = new SqlConnection(ConnectionString);
const string cmd = "SELECT [Origin],[X],[Y] FROM [SpiderDB61].[dbo].[View_Addresses_AddressNames]" +
" where Origin = 5 and X = -26262.5 and Y = 6728873.3";
var lSQLCommand = new SqlCommand(cmd, lConnection);
lConnection.Open();
SqlDataReader lReader = lSQLCommand.ExecuteReader();
object a;
object b;
object c;
while (lReader.Read())
{
a = lReader[0];
b = lReader[1];
c = lReader[2]; // <-- this will be 6728873.5, not 6728873.3
}
答案 0 :(得分:3)
real
是float(24)
,它为您提供大约 7 digits of precision。 6728873.3
是8位数。基本上,您处于real
可靠/精确的极限。您应该考虑不同的数据类型;也许float
(默认为float(53)
),也许decimal(x,y)
- 取决于此值是谨慎还是连续。