如何在没有指数值的情况下查看 ssms 中的浮点值?
How to see Float value in ssms without exponential values?
我在浮点列的 table 中插入了一个值。当我在 ssms 中看到记录时,它看起来像指数值。
例如,请在 ssms 中执行以下查询并在 SSMS 中查看输出。我们可以看到指数值作为输出。
declare @l_float float = '1234567890123456789.12345'
select @l_float
有没有什么方法可以在不转换为小数或数字的情况下,将价值视为与申报价值相同?
对于 .NET,是否会得到与我们在 SSMS 中得到的相同的输出? (当他们也使用双数据类型时?)
提前致谢。
此致,
穆图
首先:如果没有很好的理由,请不要使用FLOAT
!
请记住,您看到的值不是实际值!。它是人类难以理解/解释的二进制值的文本表示。
FLOAT
和 SSMS 存在几个问题:
FLOAT
不准确。当在某处或在计算中显示时,它将以某种方式四舍五入。您始终可以使用某种格式强制输出,但在这种情况下,您很可能必须切换到 string-level
- 使用
FLOAT
的计算往往会产生愚蠢的 错误 ,在那里您会得到意想不到的数字(例如 0.00000003
而不是纯 0
).在比较中,这可能导致难以发现 bug...
- SSMS 在大多数情况下会尝试以最佳 方式向您显示结果。根据值范围,这可能因列而异...
如果可能的话切换到DECIMAL(x,y)
我在浮点列的 table 中插入了一个值。当我在 ssms 中看到记录时,它看起来像指数值。
例如,请在 ssms 中执行以下查询并在 SSMS 中查看输出。我们可以看到指数值作为输出。
declare @l_float float = '1234567890123456789.12345'
select @l_float
有没有什么方法可以在不转换为小数或数字的情况下,将价值视为与申报价值相同?
对于 .NET,是否会得到与我们在 SSMS 中得到的相同的输出? (当他们也使用双数据类型时?)
提前致谢。
此致,
穆图
首先:如果没有很好的理由,请不要使用FLOAT
!
请记住,您看到的值不是实际值!。它是人类难以理解/解释的二进制值的文本表示。
FLOAT
和 SSMS 存在几个问题:
FLOAT
不准确。当在某处或在计算中显示时,它将以某种方式四舍五入。您始终可以使用某种格式强制输出,但在这种情况下,您很可能必须切换到 string-level- 使用
FLOAT
的计算往往会产生愚蠢的 错误 ,在那里您会得到意想不到的数字(例如0.00000003
而不是纯0
).在比较中,这可能导致难以发现 bug... - SSMS 在大多数情况下会尝试以最佳 方式向您显示结果。根据值范围,这可能因列而异...
如果可能的话切换到DECIMAL(x,y)