SQL中的奇怪浮点行为

史蒂夫·米

在遇到一些错误的动态SQL时,我遇到了以下无法在SQL Server中解释的行为,有人可以帮我理解原因吗?

declare @test as decimal(28,2) = 2568595.4
select SUBSTRING(CAST(ABS(@test)*1000 AS VARCHAR(100)),1,2)

返回“ 25”

declare @test as float = 2568595.4
select SUBSTRING(CAST(ABS(@test)*1000 AS VARCHAR(100)),1,2) 

返回“ 2”。

戈登·利诺夫

如果您删除了substring()

select CAST(ABS(@test)*1000 AS VARCHAR(100))
--> 2.5686e+009

float不精确的词通常用科学记数法表示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章