DIM i AS INTEGER;
DIM num_float AS REAL;
DIM exp_abs AS INTEGER;
DIM num_string AS MESSAGE;
DIM num_len AS INTEGER;
DIM Mantisa_string AS MESSAGE;
DIM Mantisa_real AS REAL;
DIM Exponente_string AS MESSAGE;
DIM Exponente_real AS REAL;

num_string = StringFromIntg(num,2);
num_len = StringLen(num_string); 

IF num_len < 32  THEN
    FOR i = num_len TO 31 STEP 1
          num_string = "0" + num_string;
    NEXT; 
ENDIF;


{CALCULAR LA MANTISA}

Mantisa_string = StringRight(num_string,23);
Mantisa_real = 0;

IF StringMid(Mantisa_string,7,1) == "1" THEN
Mantisa_real = Mantisa_real + 1/128;
ENDIF;
IF StringMid(Mantisa_string,6,1)  == "1" THEN
Mantisa_real = Mantisa_real + 1/64;
ENDIF;
IF StringMid(Mantisa_string,5,1)  == "1" THEN
Mantisa_real = Mantisa_real + 1/32;
ENDIF;
IF StringMid(Mantisa_string,4,1)  == "1" THEN
Mantisa_real = Mantisa_real + 1/16;
ENDIF;
IF StringMid(Mantisa_string,3,1) == "1" THEN
Mantisa_real = Mantisa_real + 1/8;
ENDIF;
IF StringMid(Mantisa_string,2,1)  == "1" THEN
Mantisa_real = Mantisa_real + 1/4;
ENDIF;
IF StringMid(Mantisa_string,1,1) == "1" THEN
Mantisa_real = Mantisa_real + 1/2;
ENDIF;

Mantisa_real = 1 + Mantisa_real;


{CALCULAR EXPONENTE}

Exponente_string = StringMid(num_string,2,8);
Exponente_real = -127;

IF StringMid(Exponente_string,1,1) == "1" THEN
    Exponente_real = Exponente_real + 128;
ENDIF;

IF StringMid(Exponente_string,2,1) == "1" THEN
    Exponente_real = Exponente_real + 64;
ENDIF;

IF StringMid(Exponente_string,3,1) == "1" THEN
    Exponente_real = Exponente_real + 32;
ENDIF;

IF StringMid(Exponente_string,4,1) == "1" THEN
    Exponente_real = Exponente_real + 16;
ENDIF;

IF StringMid(Exponente_string,5,1) == "1" THEN
    Exponente_real = Exponente_real + 8;
ENDIF;

IF StringMid(Exponente_string,6,1) == "1" THEN
    Exponente_real = Exponente_real + 4;
ENDIF;

IF StringMid(Exponente_string,7,1) == "1" THEN
    Exponente_real = Exponente_real + 2;
ENDIF;

IF StringMid(Exponente_string,8,1) == "1" THEN
    Exponente_real = Exponente_real + 1;
ENDIF;



{CALCULAR EL NUMERO EQUIVALENTE}

exp_abs = Abs(Exponente_real);
num_float = 1;

IF Exponente_real > 0 THEN
    FOR i = 1 TO exp_abs STEP 1
          num_float = num_float * 2;
    NEXT; 
ELSE
    IF Exponente_real < 0 THEN
        FOR i = 1 TO exp_abs STEP 1
              num_float = num_float * 1/2;
        NEXT;

ELSE
            IF  Exponente_real == 0 THEN
                num_float = 1;
ENDIF;
ENDIF;
ENDIF;

num_float = num_float * Mantisa_real;

{SIGNO DEL NUMERO}

IF StringMid(num_string,1,1) == "1" THEN
    num_float= -num_float;
ENDIF;


RETURN num_float;