【问题标题】:Convert string to number for large and small numbers sas将字符串转换为大数和小数sas的数字
【发布时间】:2017-06-18 13:00:35
【问题描述】:

我的 sas 有问题。我有一个数据集,其中数字存储为字符串。问题是数字的大小和格式变化很大。我举个例子:

 data s;
   x='123456789012345';
   y=input(x,best32.);
   z = '0.0001246564';
   a = input(z,best32.);
   put 'a='y;
   put a;
   keep y a;
run;

输出:

y=
1.2345679E14
a=
0.00012465644

如您所见,我丢失了大整数中的信息。我怎样才能让我的程序不丢失信息。据我了解,这个数字少于 15 位 sas large number。我真的很想念python,我只能设置y = float(x)。

【问题讨论】:

    标签: string sas numbers


    【解决方案1】:

    没有发生信息丢失。您只是将informat 误认为format

    best32. 的信息告诉 SAS 导入宽度为 32 的字符串。很好,您的号码中存储了所有 15 个字符。

    现在,如果您想查看全部 15 个字符,您需要使用比默认 best12. 格式更宽的格式才能在输出中看到它:

     data s;
       x='123456789012345';
       y=input(x,best32.);
       z = '0.0001246564';
       a = input(z,best32.);
       put y= best32.;
       put a= best32.;
       keep y a;
    run;
    

    但是即使你不这样显示,数字y 仍然完全等于 123456789012345,如果你用它或类似的东西做数学 - 你没有丢失任何信息,你只是' t 显示正确。

    【讨论】:

    • 非常感谢。最好的12。是默认的我不知道吗:)
    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多