SAS ceil / floor问题使用大数字并希望ceil / floor到最近的10,000

时间:2014-01-16 17:00:08

标签: sas floor ceil

我有一个号码,我需要找到天花板和楼层值(203,400),以便使用此数字来创建加权平均值。从这个数字我想要:200,000和210,000所以我使用的代码不起作用是:

S1CovA_ceil = ceil(S1CovA,10000);
S1CovA_floor = floor(S1CovA,10000);

当我运行此程序时,我收到以下错误: 错误72-185:CEIL函数调用有太多参数。 错误72-185:FLOOR函数调用有太多参数。

有没有人知道我可以使用的这种或不同的SAS代码?

3 个答案:

答案 0 :(得分:2)

CEILFLOOR仅删除小数 - 特别是舍入为整数值。如果你希望它舍入到(高于/低于)10,000的倍数,你必须做得更复杂一点:

S1CovA_ceil = ceil(s1covA/10000)*10000;

地板也一样。基本上你必须将它除以所需的舍入水平,用ceil / floor围绕其余部分,然后再乘以。

不幸的是,据我所知,除了直线整数舍入外,SAS不允许在特定方向上舍入。

答案 1 :(得分:1)

您也可以使用round()函数...

%LET ROUNDTO = 10000 ;
data xyz ;
  S1CovA_ceil  = round(S1CovA+(&ROUNDTO / 2),&ROUNDTO) ;
  S1CovA_floor = round(S1CovA-(&ROUNDTO / 2),&ROUNDTO) ;
run ;

答案 2 :(得分:0)

尝试

    S1CovA_ceil = ceil(S1CovA/10000)*10000;  
    S1CovA_floor = floor(S1CovA/10000)*10000;