SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
angeliquec
Quartz | Level 8

Hi,

 

In the code below, the SAS base application in our office displays the values in 'displayed' column when a is divided by b, then multiplied to 100, even if we made the format best32. However, the calculator gives longer values. 

 

But when I tried doing the division in the "want" dataset in SAS Studio (SAS base on demand), the division works fine. 

 

Can the automatic rounding of SAS be fixed?

 

 

 

data have;
input a b displayed;
cards;
16854.17 197890.028 8.5169375
819368.85 369280 221.8828125
150914.35 255027.6243 59.1756875
226253.24 858790.6977 26.3455625
100876.91 363464.5669 27.7542625
14788.51 777104.3771 1.9030275
;
run;

data want;
set have;
d = (a/b)*100;
run;

 

 

7 REPLIES 7
Reeza
Super User

Can you post the numbers you want to see?

What version of SAS are you working on?

 

Most likely it's related to numerical precision:

http://support.sas.com/documentation/cdl/en/lrcon/68089/HTML/default/viewer.htm#p0ji1unv6thm0dn1gp4t...

angeliquec
Quartz | Level 8
Hi Reeza,

We're using 9.4. The numbers I want are those under column d in the want dataset, which have more precision
PGStats
Opal | Level 21

Try

 


proc print data=want;
format d 20.10;
run;
PG
angeliquec
Quartz | Level 8
Hi Reeza

Apologies, we are using SAS 9.0.
Is there a way to address this precision issue?
Reeza
Super User

I doubt you're using 9.0...that would be akin to using Windows XP version 1, not even SP4.

 

What do you get from:

%put &sysver;

 

 

angeliquec
Quartz | Level 8
sorry, 9.4.

For the first row in the have data, SAS gives a quotient of 8.516937500000 when the actual answer is 8.5163749995668. SAS seems to do truncation there.
andreas_lds
Jade | Level 19

Interesting, win7 calculator returns 8.5169374982351308778429199070102 for the first row.

 

With format 20.10 applyed to variable d, SAS returns 8.5169374982 - SAS on Windows and Linux uses up to 15 digits. I don't think that value can be increased by altering a config file or by setting a sas system option.

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 2804 views
  • 1 like
  • 4 in conversation