Autor Tema: Valores devueltos por funciones  (Leído 211 veces)

KeiDash

  • Jr. Member
  • **
  • Mensajes: 77
  • Karma: 3
  • https://twitter.com/AMelianRGD
    • Mi Web
Valores devueltos por funciones
« en: Enero 19, 2018, 11:04:14 am »
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:

Código: [Seleccionar]
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

  • Administrator
  • *****
  • Mensajes: 2153
  • Karma: 74
    • panreyes.com
Re:Valores devueltos por funciones
« Respuesta #1 en: Enero 19, 2018, 11:55:13 am »
No sé si será el caso, pero prueba a poner la función antes que el proceso :)

KeiDash

  • Jr. Member
  • **
  • Mensajes: 77
  • Karma: 3
  • https://twitter.com/AMelianRGD
    • Mi Web
Re:Valores devueltos por funciones
« Respuesta #2 en: Enero 19, 2018, 12:45:02 pm »
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

  • Hero Member
  • *****
  • Mensajes: 12755
  • Karma: 375
Re:Valores devueltos por funciones
« Respuesta #3 en: Enero 19, 2018, 02:15:17 pm »
si no la declaras antes de usarla, se declara como int
Download Lastest BennuGD Release: http://www.bennugd.org/node/2