基本上,进行类似平均的两个查询给了我不同的结果;预期的“实际”值是 81.25,因此通过正常舍入,您会认为将其转换为 DECIMAL(10,1) 会导致 81.3,但其中一个查询(第一个)给出 81.2
以下是示例:
CAST( AVG( t1.NumCorrect / 7.0 * 100.0 ) AS decimal(10,1))
对比
CAST( AVG( t2.PercentCorrect ) AS decimal(10,1))
据我所知,唯一的区别是 PercentCorrect 是 REAL 类型,而 NumCorrect 是 FLOAT 类型。但它们都是浮点类型,那么为什么转换它们的行为会有所不同呢?
在第一行中,NumCorrect 就像“在 7 个可能中正确”,所以我正在计算一个“百分比”,然后是 AVG'd;而在第二个示例中,百分比是预先计算的,我只需要它 AVG'd。同样,第一行是给出 81.2 而不是 81.3
如果我需要为周围的查询或源数据提供更多上下文,我可以尝试……让我知道。