2

我有这个 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

为什么在第一种情况下,即使使用十进制容器作为结果,结果也会四舍五入?

4

1 回答 1

2

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

请参阅此处的 MSDN 文档

修理:

declare @dcml decimal(18,5)

这将存储小数点后的 5 位数字。

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

于 2013-06-24T15:40:33.003 回答