DATA Step, Macro, Functions and more

Round numbers and getting rid of extra zeroes

Accepted Solution Solved
Reply
Super Contributor
Posts: 413
Accepted Solution

Round numbers and getting rid of extra zeroes

Hi,

 

suppose I have the following table PARMS:

parameter esimate
a 14.72344
b -0.00015
c 0.74911
d -0.00986

 

using the round function I rounded each value to 3 decimal places and got the following table PARMS2:

 

data parms2;
set parms;
estimate= round(estimate,.001); 
run;
parameter estimate
a 14.72300
b 0
c 0.74900
d -0.01000

 

Now I want to get rid of the extra zeroes - I want to leave only the integer part and the first 3 decimals. I thought just getting rid of the 2 right-most numbers using the following code:

 

data parms3;
set parms2;
estimate=substr(estimate,1,length(estimate)-2);
run;

 

But the result PARMS3 is a mess:

 

parameter estimate
a 14.70000
b .
c 0.70000
d 0

 

Could you please help me?

 

Thank you!

 


Accepted Solutions
Solution
‎10-12-2016 03:57 PM
Super User
Posts: 17,750

Re: Round numbers and getting rid of extra zeroes

SUBSTR is intended for characters you have a numeric variable.

 

Why not use a format instead?

 

format estimate 12.3;

View solution in original post


All Replies
Solution
‎10-12-2016 03:57 PM
Super User
Posts: 17,750

Re: Round numbers and getting rid of extra zeroes

SUBSTR is intended for characters you have a numeric variable.

 

Why not use a format instead?

 

format estimate 12.3;
Super User
Posts: 10,466

Re: Round numbers and getting rid of extra zeroes

Note that using a format like 12.3 can remove the need for a separate rounding step and may prevent some odd behaviors involving multiple rounding.

Please see:

data _null_;
   x= 123.78445;
   r1=round(x,0.0001);
   r2 = round(r1,0.001);
   r3 = round(r2,0.01);
   put x= 12.4 r1= x=12.3 r2= x=12.2 r3=;
run;
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 208 views
  • 1 like
  • 3 in conversation