小编jun*_*hes的帖子

处理 SAS 中的舍入错误

我正在开发一个大型数据应用程序,并且遇到了似乎无法修复的舍入错误。代码基本上是这样的:

proc sql;
select round(amount,.01) - round(amount * (percentage/100),.01) as amount
from data;
quit;
Run Code Online (Sandbox Code Playgroud)

我尝试了各种修复方法,但所有似乎都会导致另一个方向出现其他舍入错误。对于产生错误量 = 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
Run Code Online (Sandbox Code Playgroud)

其中第二个解决了问题,但在另一个方向上产生了三个舍入误差。

非常感谢任何帮助。

谢谢。

sql database sas rounding proc

0
推荐指数
1
解决办法
909
查看次数

标签 统计

database ×1

proc ×1

rounding ×1

sas ×1

sql ×1