DATA Step, Macro, Functions and more

Converting char to num

Reply
New Contributor
Posts: 3

Converting char to num

Hello Everyone,

 

I want 100.10 as a value of variable e. is it possible without using any format ?

 

data _null_;

b="100.1";
c=input(b,5.2);

d="100.10";
e=input(b,6.2);

put _all_;
run;

 

Capture.PNG

Super User
Posts: 6,785

Re: Converting char to num

No, it's not possible.  Numbers do not contain a set of characters in SAS.  Numbers store a numeric value, not the form in which it is expressed.  You can always add a FORMAT statement later, when printing the numeric variable.

 

Just for the record, your INPUT functions are treading on dangerous ground.  You would be safer using:

 

b="100.1";
c=input(b,5.);

d="100.10";
e=input(b,6.);

 

To see why, try this (and read the documentation):
 

b="12345";
c=input(b,5.2);

Super User
Posts: 10,280

Re: Converting char to num




@_sas wrote:

Hello Everyone,

 

I want 100.10 as a value of variable e. is it possible without using any format ?

 



SAS data step being turing-complete, it is of course possible. See here:

data test;
have = '100.10';
want = 0;
fr_count = .;
do i = 1 to length(have);
  if substr(have,i,1) = '.'
  then fr_count = 0;
  else do;
    want = want * 10 + rank(substr(have,i,1)) - 48;
    if fr_count ne . then fr_count + 1;
  end;
end;
if fr_count ne . then want = want / 10 ** fr_count;  
run;

Note that I did this because sometimes I have enough time at hand to waste on stupid ideas Smiley Wink

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Super User
Posts: 10,787

Re: Converting char to num

data _null_;

b="100.1";
c=b+0;


put _all_;
run;
Ask a Question
Discussion stats
  • 3 replies
  • 116 views
  • 3 likes
  • 4 in conversation