具有三个值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
但是我对所有值使用了三舍五入,结果返回错误的结果。
select ROUND(@a, 3), ROUND(@b, 3) + ROUND(@c, 3)
预期结果是
ROUND(@a, 3) = ROUND(@b, 3) + ROUND(@c, 3)
答案 0 :(得分:3)
您应该对结果进行四舍五入,而不是对每个变量进行四舍五入:
SELECT ROUND(@a + @b + @c, 3)
答案 1 :(得分:0)
确切的查询应该是
select ROUND(@a,3),ROUND(@b+@c,3)
这可以给您想要的结果。
答案 2 :(得分:0)
每次您ROUND()时,您都会偏离实际值一定的百分比,无论多么微小。现在,您使用ROUND()的次数越多,您偏离的范围就越远。始终建议将最终输出舍入。
我假设您提供的示例数字不是您遇到问题的实际数字?