## Scientific notation

Solved
Frequent Contributor
Posts: 82

# 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
Posts: 5,543

## 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

All Replies
Solution
‎04-19-2012 06:00 PM
Posts: 5,543

## 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: 82

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 and locked.