我有这个 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
为什么在第一种情况下,即使使用十进制容器作为结果,结果也会四舍五入?
我有这个 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,而您没有指定一个值来覆盖它。
请参阅此处的 MSDN 文档。
修理:
declare @dcml decimal(18,5)
这将存储小数点后的 5 位数字。
基本上你在那里有一个整数类型。