我正在研究一个大型数据应用程序并遇到了一个我似乎无法解决的舍入错误。代码基本上是这样的:
proc sql;
select round(amount,.01) - round(amount * (percentage/100),.01) as amount
from data;
quit;
我已经尝试了各种修复方法,但似乎所有方法都会导致其他方向的其他舍入错误。对于产生错误数量= 56.45和百分比= 10的行,我得到的结果等于50.80,并希望结果等于50.81。我不能接受舍入错误,因为有一个单独的进程可以反转没有舍入错误的事务,最后反转加上产生舍入错误的部分必须加起来为零。
代码我尝试过:
select round((((100-percentage)/100)*amount), .01)
select round(amount,.01) - round(amount * (percentage/100),.001) as amount
第二个修复了问题,但在另一个方向上创建了三个舍入错误。
非常感谢任何帮助。
谢谢。
在不知道您的数据类型的情况下,我无法肯定地说,但这里有一些更改可以帮助解决您的问题:
100-percentage/100
评估为100-10/100
= 100-0.1
= 99.9
,我认为这不是你想要的。同样,你还有一个比在该行上打开更近的括号。