我有这个 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,并且您没有指定一个值来覆盖它。
参见the MSDN documentation here .
修复:
declare @dcml decimal(18,5)
这将存储小数点后 5 位数字。
基本上你有一个整数类型。
关于sql-server-2005 - 为什么在 SQL Server Decimal 类型中对每个小数结果进行舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17279279/