我有这个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
为什么在第一种情况下,即使使用结果的小数容器,结果也会被舍入?
答案 0 :(得分:2)
因为默认情况下,小数点后存储的位数为0,并且您没有指定值来覆盖它。
请参阅the MSDN documentation here。
修复:
declare @dcml decimal(18,5)
这将在小数点后存储5位数。
基本上你有一个整数类型。