【问题标题】:Length of numeric values in SASSAS 中数值的长度
【发布时间】:2015-02-04 12:32:15
【问题描述】:

我尝试使用不同长度的数值变量。我参考了下面的链接

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 请记住,这些是可以安全存储的最大整数。如果小数点右边有数字,那么 3 个字节就不会走得太远。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多