为什么从这两个查询中得到不同的结果?
第一个查询:
var
第二个查询:
DECLARE @b FLOAT;
SET @b = 100
SELECT @b / 3 + @b / 3 + @b / 3
我了解了很多有关SQL中的浮点类型的信息,但在这两个查询中没有得到什么区别
(第一个是100,第二个是99)
答案 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