也许这是一个愚蠢的问题,但我无法找到SAS中数字类型变量的下限和上限。我发现了this论文及其背后的所有理论,并在一些论坛上讨论说上限是1E200,但我很确定它是(操作)系统架构的依赖。尽管如此,我希望有更正式的东西,比如常量MIN_NUMERIC_VALUE或MAX_NUMERIC_VALUE,我可以将其用于比较,以避免溢出。任何相关信息表示赞赏。 的Marius
答案 0 :(得分:3)
CONSTANT
功能为您提供这样的信息。
%put %sysfunc(constant(big));
对于Windows系统,大约是1.8e308。
作为背景,Windows中的数字基于存储数字,如下所示:
1 bit : sign
10 bits : exponent (the result is 2 to the power of this times the mantissa;
this is like the 13 in 1.3425e13 in scientific notation)
53 bits : mantissa (this would be the 'decimal' portion, so the 1.3425 in the above.
A fraction of 2, and strictly less than 2.)
指数可以存储高达2 ^ 10-1,因此仅由指数部分表示的实际数字是尾数的2 ^(2 ^ 10-1)倍。尾数可以小于2,因此任何给定指数的最大数字是2 ^(指数)* 2 - 1.
因此你可以存储2 ^(2 ^ 10-1)* 2-1或2 ^ 1024-1,差不多是1.8e308。
答案 1 :(得分:0)
您可以在Windows上的SAS变量中存储的最大整数是9,007,199,254,740,992,使用长度= 8。 Here is a table of precission for different lengths on Windows