如何在没有指数值的情况下查看ssms中的浮点值?

时间:2017-02-01 07:58:53

标签: c# sql-server-2008 tsql ssms

我在float colum的表中插入了一个值。当我在ssms中看到记录时,它看起来像指数值。

例如,请在ssms中执行以下查询并查看SSMS中的输出。我们可以看到指数值作为输出。

declare @l_float float = '1234567890123456789.12345'

select @l_float

是否有可能在不转换为十进制或数字的情况下将值视为与声明的值相同?

对于.NET,这个输出是否会像我们在SSMS中得到的那样? (当他们也使用双数据类型时?)

提前致谢。

此致

MUTHU

1 个答案:

答案 0 :(得分:2)

首先:如果您没有充分的理由,请不要使用FLOAT

请记住,看到的值不是实际值!。它是人类难以理解/解释的二元值的文本表示。

使用FLOAT和SSMS有几个问题:

  1. FLOAT不准确。当在某处或在计算中显示时,它将以某种方式舍入。您可以使用格式化来强制执行输出,但在这种情况下,您很可能必须切换到字符串级别
  2. 使用FLOAT进行计算往往会产生愚蠢的错误,您可以获得不期望的数字(例如0.00000003而不是纯0)。在比较中,这可能导致难以找到的错误 ...
  3. 在大多数情况下,SSMS会尝试以最佳方式向您显示结果。根据值的范围,这可能因列而异......
  4. 如果可以切换到DECIMAL(x,y)