我对SAS 数据存贮和显示不明白,例如下面的CODE:
DATA ONE;
LENGTH DENTOOP1 3;
DENTOOP1 = 8192;
DENTOOP2 = 8192;
RUN;
DATA TWO;
SET ONE;
DENTOOP1 = ROUND(DENTOOP1*(1.13));
DENTOOP2 = ROUND(DENTOOP2*(1.13));
PUT DENTOOP1= ;
PUT DENTOOP2= ;
RUN;
我在LOG里看到的结果是
DENTOOP1=9257;
DENTOOP2=9257;
但是在 DATASET TWO 里 DENTOOP1 显示的值是9256 而不是 9257, 而且 DENTOOP1 和
DENTOOP2 的BINARRY 存储在机器里的显示是一样的。
我的问题是既然 DENTOOP1 的存储代码和 DENTOOP2 的是一样的,为什么在 DATASET
里显示的不一样?
按我的理解,DENTOOP1 的存储代码应该是对应于9256,而不是9257。
有劳那位给我答疑。谢谢!
q********i 发帖数: 795
2
it is due to your length statement. Specifying a length less than that
required will result in a loss of precision without any warning being given.
length 3 can only store integers up to 8,192 w/o losing precision.