我正在处理大型数据应用程序,但遇到了无法解决的舍入错误。代码基本上是这样的:
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
其中第二个解决了该问题,但在另一个方向上产生了三个取整错误。
非常感谢您的帮助。
谢谢。
答案 0 :(得分:4)
我无法肯定地说不知道您的数据类型,但是以下更改将有助于解决您的问题:
100-percentage/100
的计算结果为100-10/100
= 100-0.1
= 99.9
,我认为这不是您想要的。同样,圆括号比在该行上打开的括号要多。