我有以下操作:
SELECT 9 / 2;
结果是4而不是4.5。我将代码修改为:
DECLARE @p1 AS INT = 9, @p2 AS INT = 2;
SELECT CAST(@p1 AS NUMERIC(12, 2)) / CAST(@p2 AS NUMERIC(12, 2));
新结果是:
4.500000000000000
为什么我的结果中会有额外的0?
用于确定计算结果的精度和小数位数的规则可以是在Precision, scale, and Length (Transact-SQL)中找到。
这里的操作是除法。适用公式计算此处的精度为p1-s1 + s2 + max(6,s1 + p2 + 1),应用于我们的输入时结果为27。比例的公式为max(6,s1 + p2 + 1),在这种情况下为15。