SAS中数值的长度

Length of numeric values in SAS

我尝试使用不同长度的数字变量。我在下面提到 link

http://support.sas.com/documentation/cdl/en/hostwin/63285/HTML/default/viewer.htm#numvar.htm

这里给定长度为3可以表示的最大整数是8192。

我尝试了下面的示例程序。我已经声明了一个长度为 3 的变量 num。并尝试存储超过 8192 的不同值。

data numeric_values;
    input num;
    length num 3;
    datalines;
    8194
    8192
    8193
    9000
    10000
    10008
    ;
run;

执行此程序后我没有收到任何错误。

数据集 numeric_values 已使用所有值创建 8194 8192 8192 9000 10000 10008

谁能解释一下数字数据类型中长度的概念。理解有误请指正

SAS 将数字存储为 floating points。可以安全长度为3的最大整数可能是8192,但也可以存储更大的值,但会损失精度。在您的示例中,您可以看到 8193 实际上已损坏为 8192。您的其他示例数字是偶数,恰好在更高的阈值下是安全的,但如果您选择 10009 作为示例,您会看到它已损坏也进入 10008。

有趣的是,SAS 在发生这种情况时不提供任何警告或注释。我猜他们已经决定让程序员有责任了解浮点符号的技巧。

[根据 DWal 的重要评论编辑了专门针对整数的答案。]