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在结果显示中舍入?
没有.
SQL Server Management Studio将浮点值舍入以用于显示目的; 有一个Connect建议可以改变这种行为,但它是"按设计"关闭的.
然而SQLCMD
,osql
和查询分析器没有.
SQLCMD -E -S server -Q"SELECT CONVERT(FLOAT, 1555.4899999999998)"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10727 次 |
最近记录: |