SAS中的长数字到字符

SAS中的长数字到字符,sas,Sas,当我试图转换存储为8的10位数字时。使用put(,8.)将字符值转换为类似于1.2345e10的值。我希望字符串为1234567890。有人能帮忙吗?8。是您要使用的宽度(字符数)。当然是1.2345e9;这就是它可以容纳8个字符的地方 x_char = put(x,10.); 这要求将其输入10个字符。如果您希望它超过10个,请继续扩展它。请注意,如果您对短于最大长度值的右对齐的默认对齐方式不满意,则可能需要使用可选对齐选项(put(x,10.-l)) 请注意,当您最初将数字描述为8.时,我

当我试图转换存储为8的10位数字时。使用put(,8.)将字符值转换为类似于1.2345e10的值。我希望字符串为1234567890。有人能帮忙吗?

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

x_char = put(x,10.);
这要求将其输入10个字符。如果您希望它超过10个,请继续扩展它。请注意,如果您对短于最大长度值的右对齐的默认对齐方式不满意,则可能需要使用可选对齐选项(
put(x,10.-l)


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

除非非常确定您的输入,否则我认为最好使用
最佳。

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。这里将删除任何小数和较大的数字:


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

您用来存储数据的
长度
与您应该使用多少字符来显示供人类读取的值没有多大关系。如何显示值由您使用的
格式控制。使用何种格式取决于变量包含的值的类型

因此,如果您知道您的值始终是整数,且最大值为9999999999,则可以使用格式
10.
(也称为
F10.

charvar= put(numvar,F10.);