BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
apolitical
Obsidian | Level 7

Say I want to define a macro variable "num" to be 10 to the negative 2 power (0.01). I do:

 

%let num=%eval(10**(-2));
%put &num.;

 

but I get

 

%put &num.;
SYMBOLGEN: Macro variable NUM resolves to 0
0

 

 What's wrong here? Thanks.

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

To work with floating point numbers use %SYSEVALF().

 

http://blogs.sas.com/content/sastraining/2011/09/23/sas-authors-tip-macro-functions-eval-and-syseval...

 The %EVAL function evaluates expressions using integer arithmetic. The %SYSEVALF function evaluates expressions using floating point arithmetic.

 

 

%let num=%sysevalf(10**(-2));
%put &num.;

 

 

View solution in original post

2 REPLIES 2
Reeza
Super User

To work with floating point numbers use %SYSEVALF().

 

http://blogs.sas.com/content/sastraining/2011/09/23/sas-authors-tip-macro-functions-eval-and-syseval...

 The %EVAL function evaluates expressions using integer arithmetic. The %SYSEVALF function evaluates expressions using floating point arithmetic.

 

 

%let num=%sysevalf(10**(-2));
%put &num.;

 

 

apolitical
Obsidian | Level 7
That works great. Thank you.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 2 replies
  • 2001 views
  • 1 like
  • 2 in conversation