SQL Server Management Studio中浮点类型的完全精确输出

Sim*_*mon 8 sql-server floating-point ssms

我将值1555.4899999999998存储在float具有默认精度的列中(53).当我做一个简单的操作时select,SSMS会对输出进行舍入,而不是以所有可用精度打印它.最近它给我带来了一些问题,因为打印的值不能作为float匹配实际存储值的文字.

例如(注意这两个数字在默认情况下都有精确的表示float),

declare @f1 float
declare @f2 float
set @f1 = 1555.49
set @f2 = 1555.4899999999998
select @f1, @f2
select STR(@f1,30,15), STR(@f2,30,15)
Run Code Online (Sandbox Code Playgroud)

输出:

1555.49 1555.49
1555.490000000000000    1555.489999999999800
Run Code Online (Sandbox Code Playgroud)

在查询分析器中,首先select输出:

1555.49 1555.4899999999998
Run Code Online (Sandbox Code Playgroud)

这就是我想从Management Studio获得的行为.有没有办法防止SSMS在结果显示中舍入?

gon*_*alu 7

没有.

SQL Server Management Studio将浮点值舍入以用于显示目的; 有一个Connect建议可以改变这种行为,但它是"按设计"关闭的.

然而SQLCMD,osql和查询分析器没有.

SQLCMD -E -S server -Q"SELECT CONVERT(FLOAT, 1555.4899999999998)"
Run Code Online (Sandbox Code Playgroud)