Anuncios Google

Error en Tonumber [Luadev]

Tengo un problema con un CODE de Luadev relacionado con TONUMBER:

 

--Tenemos una sencilla operación:
 
 
sol=-50*(3+4)
 
--Si ponemos un os.message(sol) nos dará la respuesta correcta
--Lo que yo quiero es que:
 
sol=tonumber("-50*(3+4)")
os.message(sol)
 
--En cambio en este sol toma un valor nulo. No entiendo el porqué...

 

Lo que yo quisiera es saber la forma de transformar una operación entre comillas en una operación de números

Un saludo & Gracias


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Solución...

Si es lo que quieres hacer, es así ;D

--Tenemos una sencilla operación:
 
sol = -50*(3+4)
 
--Si ponemos un os.message(sol) nos dará la respuesta correcta
 
-- sol=tonumber("-50*(3+4)") --// No es necesario...
 
os.message(tostring(sol)); -- Así, sí.

Un saludo.


 

 

Imagen de jorge_97

By jorge_97

mmmm no

No es eso lo que quiero hacer pero de todos modos gracias por colaborar Dovemac

Un saludo

Ahhhh, entiendo ;D

Ahhhh, entiendo ;D

Imagen de Jepte

es nulo por que el string no

es nulo por que el string no tiene valor numerico si fuera una variable talves si,

pero si a sol le agregas todo eso automaticamente ya es numero no creo que nesecites

convertirla .saludos

Regresa nil porque la cadena

Regresa nil porque la cadena que le pasaste no se puede convertir a number directamente (tu y yo sabemos que si, pero Lua no llega a tanto xD). Toca usar loadstring:

--[[
  sol será el resultado de la operación, se supone,
  así que hay q concatenarlo al inicio de la operación...
]]
  operacion="-50*(3+4)"
    operación = "sol="..operacion
--Osease... que queda "sol=-50*(3+4)"
  f=loadstring(operacion)  --Cargo el code a una variable arbitraria
    f()  --Y lo ejecuto (con esta línea es como poner sol=-50*(3+4) directo en el code)
--En este punto, sol ya tiene el resultado (y ya es number, no hace falta convertir)
 
--Muy complejo? Vale... todo en una sola línea...
  assert(loadstring("sol=-50*(3+4)"))()  --De la web de Lua...
-- Y ya, de nuevo sol tiene el resultado y ya es number ^^

Imagen de jorge_97

By jorge_97

ahahahaha

Entendido perfectamente XD

Ayer por la noche antes de que dijeses esto lo conseguí pero usé un io para abrir el archivo y un DOFILE para ejecutarlo.... no recordaba loadstring()

Mucho, mucho, mucho más rapido

Muchas gracis Rober. Doy esto por cerrado

 

Un saludo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.