T-SQL对带有浮点变量的同一查询的不同结果

时间:2019-02-01 13:33:48

标签: sql tsql floating-point

为什么从这两个查询中得到不同的结果?

第一个查询:

var

第二个查询:

  DECLARE @b FLOAT;
  SET @b = 100

  SELECT @b / 3 + @b / 3 + @b / 3 

我了解了很多有关SQL中的浮点类型的信息,但在这两个查询中没有得到什么区别

(第一个是100,第二个是99)

1 个答案:

答案 0 :(得分:1)

似乎首先进行了计算,然后根据最高类型进行了四舍五入。 即。

在第一种情况下:

首先,我们已经执行了计算,即@ b / 3 (33.33333333333) + @ b / 3 (33.33333333333) + @ b / 3 (33.3333333333333)

现在我们将它四舍五入,所以我们有100

在第二种情况下:

首先,我们进行了计算,即将100/3 ((33.33333333333))舍入为最高类型,即舍入为33

现在我们有进一步的计算@ flt + @ flt + @ flt (33 + 33 + 33),所以我们有了99