我在float colum的表中插入了一个值。当我在ssms中看到记录时,它看起来像指数值。
例如,请在ssms中执行以下查询并查看SSMS中的输出。我们可以看到指数值作为输出。
declare @l_float float = '1234567890123456789.12345'
select @l_float
是否有可能在不转换为十进制或数字的情况下将值视为与声明的值相同?
对于.NET,这个输出是否会像我们在SSMS中得到的那样? (当他们也使用双数据类型时?)
提前致谢。
此致
MUTHU
答案 0 :(得分:2)
首先:如果您没有充分的理由,请不要使用FLOAT
!
请记住,您看到的值不是实际值!。它是人类难以理解/解释的二元值的文本表示。
使用FLOAT
和SSMS有几个问题:
FLOAT
不准确。当在某处或在计算中显示时,它将以某种方式舍入。您可以使用格式化来强制执行输出,但在这种情况下,您很可能必须切换到字符串级别FLOAT
进行计算往往会产生愚蠢的错误,您可以获得不期望的数字(例如0.00000003
而不是纯0
)。在比较中,这可能导致难以找到的错误 ... 如果可以切换到DECIMAL(x,y)