从SQL Server获取数据时出现双精度错误

时间:2014-07-16 11:01:28

标签: c# sql-server

我试图从SQL视图中获取real号码。

但在执行查询后,它会将数字从6728873.3四舍五入到6728873.5

code

为什么会发生这种情况,有什么方法吗?

我尝试使用DataReaderLinq2SQL和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
        }

1 个答案:

答案 0 :(得分:3)

realfloat(24),它为您提供大约 7 digits of precision6728873.3是8位数。基本上,您处于real可靠/精确的极限。您应该考虑不同的数据类型;也许float(默认为float(53)),也许decimal(x,y) - 取决于此值是谨慎还是连续。