jun*_*hes 0 sql database sas rounding proc
我正在开发一个大型数据应用程序,并且遇到了似乎无法修复的舍入错误。代码基本上是这样的:
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)
其中第二个解决了问题,但在另一个方向上产生了三个舍入误差。
非常感谢任何帮助。
谢谢。
在不知道您的数据类型的情况下,我不能肯定地说,但以下一些更改应该有助于解决您的问题:
100-percentage/100计算结果为100-10/100== ,我认为这100-0.1不是99.9您想要的。同样,该行上的右括号比左括号多一个。 | 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |