为什么在SQL Server十进制类型中舍入每个十进制结果?

时间:2013-06-24 15:30:03

标签: sql-server-2005

我有这个TSQL脚本:

declare @dcml decimal
declare @flt float

SELECT @dcml = 5/cast(4 AS float)
PRINT(@dcml) -- return 1

SELECT @flt = 5/cast(4 AS float)
PRINT(@flt)  -- return 1.25

为什么在第一种情况下,即使使用结果的小数容器,结果也会被舍入?

1 个答案:

答案 0 :(得分:2)

因为默认情况下,小数点后存储的位数为0,并且您没有指定值来覆盖它。

请参阅the MSDN documentation here

修复:

declare @dcml decimal(18,5)

这将在小数点后存储5位数。

基本上你有一个整数类型。