🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 03-10-2018 10:07 AM
(1064 views)
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.