Valores devueltos por funciones

Started by KeiDash, January 19, 2018, 11:04:14 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

KeiDash

Hola a todos!!

Estoy tratando de crear una función que me devuelva un número de tipo float. Internamente la función hace un redondeo y devuelve el float formateado en n dígitos.

El problema que estoy teniendo, es que cuando hago el return del valor float, la función me devuelve un número largo (que supongo que es el ID de la función).

¿Cómo se que la función no está debería estar devolviendo ese número tan grande y que está dando un valor erróneo?
Pues porque antes de hacer el return [número-float], hago un say([número-float]) y su valor es correcto.

Copio y pego la función y los pasos que estoy realizando:


Process Main()
Private
   float f  7.1451;
   float newf = 0.0;
End
Begin
   
        newf = Round(f, 2);
        say("newf vale: " + newf);  //Esto me muestra que vale 1088715520 ?¿?¿

        Loop
            frame;
        End
End

Function float Round(float f, int decimales)
Private
int i = 0;
char c = "";
string val = "";
float nf = 0.0;
End
Begin
for(i = 0;i < (decimales + 2);i++)
c = ftoa(f)[i];
val += c;
end

nf = atof(val);  //Transformo el string a float
say(nf);           //Aquí muestra el valor correcto (7.14)

return nf;
End


Mi duda es, ¿Por qué la función me está devolviendo un número entero si no es un proceso? (este caso también me pasa cuando devuelvo un string en una función). Quizás haya comprendido mal como funcionan las funciones en bennu, pero cuando retorno valores de tipo int, si funciona correctamente. ¿Debería usar punteros para estos casos de uso?

panreyes

No sé si será el caso, pero prueba a poner la función antes que el proceso :)

KeiDash

Quote from: panreyes on January 19, 2018, 11:55:13 AM
No sé si será el caso, pero prueba a poner la función antes que el proceso :)

Pues tiene usted razón, hay que crear primero la función como DECLARED y posteriormente (después del Main) ya puedes definir la estructura de la función..que flipe esto es nuevo para mi xD

Gracias panreyes

SplinterGU

si no la declaras antes de usarla, se declara como int
Download Lastest BennuGD Release: http://www.bennugd.org/node/2