有三个值a,b,c,数据类型为Decimal(15,7)
。
a
是值b
和c
的总和。
我不明白出了什么问题。四舍五入后获得正确结果的可能方法是什么?
例如:
Declare @a decimal(15,7),
@b decimal(15,7),
@c decimal(15,7)
SET @a = '15212.82856500000'
SET @b = '15207.52909500000'
SET @c = '5.29947000000'
在上述条件下,它返回正确的结果
select @a, @b + @c
但是我对所有值使用了舍入 3,它返回了不正确的结果。
select ROUND(@a, 3), ROUND(@b, 3) + ROUND(@c, 3)
预期结果为
ROUND(@a, 3) = ROUND(@b, 3) + ROUND(@c, 3)
您应该对结果进行舍入,而不是单独舍入每个变量:
SELECT ROUND(@a + @b + @c, 3)
确切的查询应该是
select ROUND(@a,3),ROUND(@b+@c,3)
这可以给你想要的结果。
每次 ROUND() 时,您都会偏离实际一定的百分比,无论多么微小。现在你使用 ROUND() 的次数越多,你偏离得越远。始终建议对最终输出进行四舍五入。
我假设您给出的示例数字不是您遇到问题的实际数字?