DATA Step, Macro, Functions and more

Scientific notation

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 80
Accepted Solution

Scientific notation

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!


Accepted Solutions
Solution
‎04-19-2012 06:00 PM
Respected Advisor
Posts: 4,651

Re: Scientific notation

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

PG

View solution in original post


All Replies
Solution
‎04-19-2012 06:00 PM
Respected Advisor
Posts: 4,651

Re: Scientific notation

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

PG
Frequent Contributor
Posts: 80

Re: Scientific notation

Thank you!

Valued Guide
Posts: 765

Re: Scientific notation

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;

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 327 views
  • 3 likes
  • 3 in conversation