Hello,
Is there any function or macro available that will return the mantissa and the exponent of a number if written in scientific notation?
For example, if the number is 123456789 (= 1.23456789E+08), I would like to be able to return two numbers:
1.23456789 and
8
Thanks!
Assuming your data is numeric :
data _null_;
do x = 123456789, -123456789, 0.003, -0.003, 0;
if x=0 then e = 0;
else e = floor(log10(abs(x)));
m = x/(10**e);
put (_all_) (=);
end;
run;
PG
Assuming your data is numeric :
data _null_;
do x = 123456789, -123456789, 0.003, -0.003, 0;
if x=0 then e = 0;
else e = floor(log10(abs(x)));
m = x/(10**e);
put (_all_) (=);
end;
run;
PG
Thank you!
hi ... here's a "no math" idea ...
data _null_;
do x = 123456789, -123456789, 0.003, -0.003, 0;
m = input(scan(put(x,e15.),1,'E'),15.);
e = input(scan(put(x,e15.),2,'E'),15.);
put x= m= e=;
end;
run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.