Pyrite | Level 9

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

1 ACCEPTED SOLUTION

Accepted Solutions
Opal | Level 21

## 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
3 REPLIES 3
Opal | Level 21

## 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
Pyrite | Level 9

## Re: Scientific notation

Thank you!

Rhodochrosite | Level 12

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

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