SAS中的长数字到字符

时间:2017-11-16 16:41:52

标签: sas

当我尝试将存储为8的10位数字转换为使用put(,8。)的字符时,它给出了像1.2345e10这样的字符值。我希望字符串为1234567890.有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

8.是您要使用的宽度(字符数)。所以当然是1.2345e9;这就是它可以容纳8个字符。

x_char = put(x,10.);

要求将其放入10个字符。如果你想要它超过10,请继续扩展它。请注意,如果你对右对齐的默认对齐不满意,你可能需要使用可选的对齐选项(put(x,10. -l)) - 长度值。

请注意,当您最初将数字描述为8.时,我怀疑您实际上指的是length; length不是显示大小,而是存储大小(内存中的字节数)。对于SBCS系统中的字符变量,它们是相同的,但对于数值变量lengthformat完全不相关。

答案 1 :(得分:2)

除非非常确定您的输入,否则我最好使用best.

data have;
  x=1234567890;output;
  x=12345.67890;output;
  x=.1234567890;output;
  x=12345678901234;output;
run;

data want;
  set have;
  length ten best $32;
  ten=put(x,10.);
  best=put(x,best32.);
run;

请注意,在这里使用10.会消除任何小数,以及更大的数字:

enter image description here

答案 2 :(得分:0)

SAS将数字存储为IEEE 64位浮点数。因此,当您看到变量的LENGTH8时,这意味着您要存储浮点表示的完整8个字节。如果长度小于8,那么您将失去一些存储更多精度数字的能力,但是当它从数据集中提取数据以供数据步骤或proc使用时,它将始终将其转换回完整数据。位IEEE格式。

用于存储数据的LENGTH与您应该使用多少个字符来显示人类阅读的值无关。如何显示该值由您使用的FORMAT控制。使用什么格式取决于变量将包含的值的类型。

因此,如果您知道您的值始终为整数且最大值为9,999,999,999,那么您可以使用格式10.(也称为F10.)。

charvar= put(numvar,F10.);