从小数点后的最后一个值开始精确计算

时间:2017-05-05 09:22:54

标签: sql-server rounding

我再次陷入困境,寻找地球上聪明的人类来帮助我。

背景

我有一个应用程序,它以给定的百分比将金额分配给某些用户。假设我有35000美元,它会以一定的比例将金额分配给3个用户(A,B和C)。所以分配的金额将是

A - 5691.05459265518

B - 14654.473815207

C - 14654.4715921378

总计最高$ 35000

问题

我必须在前端以2个十进制空格而不是浮点数提供结果。所以我使用SQL Server的循环函数,精度值为2,将这些转换为2个十进制空格并进行舍入。但问题是,当我总计这些价值时,这个价格为34999.9999而不是35000美元。

difference when rounding off

我的发现

我搜索了一下然后找到了

  

如果您要舍入的表达式以5结尾,则Round()   函数将对表达式进行舍入,以使最后一位数为偶数   数。以下是一些例子:

     

回合(34.55,1) - 结果:34.6(回合)

     

回合(34.65,1) - 结果:34.6(向下舍入)

所以从技术上讲,答案是正确的,但我正在寻找一种函数或方法来将值精确地舍入到它应该是什么。我发现,如果我开始四舍五入(如果值小于5,则将前一个数字从前一个数字增加1)从小数点后的最后一个数字开始,并继续回溯,而我只剩下2个小数位。

rounding from last digit

请指教。

0 个答案:

没有答案