Pyrite | Level 9

## how to get percentage as 99.9

When I'm using format as 5.1 or 6.1 on z variable , I'm getting 100 percentage in z variable. I need it 99.9 as required output .please someone suggest on it...

data _null_;
x = 2202;
y= 2203;
z=x/y*100;
z1 = put(z,5.1);
put x y z z1= ;
run;

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

## Re: how to get percentage as 99.9

Hi:

A picture format will not round the number. Here's some code to test, a slightly different version of your code.

``````proc format;
picture pctnr low-high='099.9';
run;

data nums;
length z2 \$5;
x = 2202;
y= 2203;
z=x/y*100;
z1=z;
z2 = put(z,pctnr.);
put x= y= z= z1= z2=;
run;

proc print data=nums label;
var x y z z1 z2;
label z='z uses sas format'
z1='z1 uses picture custom format'
z2='z2 is char var using picture format';
format z 5.1 z1 pctnr.;
run;
``````

Cynthia

2 REPLIES 2
SAS Super FREQ

## Re: how to get percentage as 99.9

Hi:

A picture format will not round the number. Here's some code to test, a slightly different version of your code.

``````proc format;
picture pctnr low-high='099.9';
run;

data nums;
length z2 \$5;
x = 2202;
y= 2203;
z=x/y*100;
z1=z;
z2 = put(z,pctnr.);
put x= y= z= z1= z2=;
run;

proc print data=nums label;
var x y z z1 z2;
label z='z uses sas format'
z1='z1 uses picture custom format'
z2='z2 is char var using picture format';
format z 5.1 z1 pctnr.;
run;
``````

Cynthia

Super User

## Re: how to get percentage as 99.9

Be advised that 99.9 will be mathematically wrong, as 99.954607354 must be rounded up (per definition) if only 1 fractional digit can be displayed.

The more correct method would be to use a 5.2 format in the put() function.

Discussion stats
• 2 replies
• 918 views
• 4 likes
• 3 in conversation