tutorial - Lua cadena a int
lua warframe (9)
La opción más clara es usar tonumber .
A partir de 5.3.2, esta función detectará automáticamente enteros (firmados), flotantes (si hay un punto presente) y hexadecimales (tanto enteros como flotantes, si la cadena comienza por "0x" o "0X").
Los siguientes fragmentos son más cortos pero no equivalentes:
a + 0 -- forces the conversion into float, due to how + works
a | 0 -- (| is the bitwise or) forces the conversion into integer. --However, unlike math.tonteger, it errors if it fails
¿Cómo puedo convertir una cadena a un entero en Lua? Gracias.
Tengo una cadena como esta:
a = "10"
Me gustaría que se convierta en 10, el número.
Puede forzar una conversión implícita utilizando una cadena en operaciones aritméticas como a a= "10" + 0
, pero esto no es tan claro o tan limpio como usar tonumber
explícitamente.
Puede hacer un acceso para mantener el "10" como int 10 en él.
Ejemplo:
x = tonumber("10")
si imprime la variable x, obtendrá un int 10 y no un "10"
lo mismo que el proceso de Python
x = int ("10")
Gracias.
Recomiendo comprobar Hyperpolyglot, tiene una comparación impresionante: http://hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
PD. En realidad, Lua se convierte en dobles y no en enteros.
El tipo de número representa números reales (coma flotante de precisión doble).
Todos los números en Lua son flotadores ( edición: Lua 5.2 o menos). Si realmente desea convertir a "int" (o al menos replicar este comportamiento), puede hacer esto:
local function ToInteger(number)
return math.floor(tonumber(number) or error("Could not cast ''" .. tostring(number) .. "'' to number.''"))
end
En ese caso, convierte explícitamente la cadena (o realmente, lo que sea) en un número, y luego trunca el número como lo haría un molde (int) en Java.
Editar: Esto todavía funciona en Lua 5.3, incluso si Lua 5.3 tiene enteros reales, ya que math.floor()
devuelve un entero, mientras que un operador como el number // 1
todavía devolverá un flotante si el number
es un flotante.
Use la función tonumber
. Como en a = tonumber("10")
.
aquí es lo que debes poner
local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)
output:
20
di que la cadena que quieres convertir en un número está en la variable S
a=tonumber(S)
siempre que haya números y solo números en S
devolverá un número, pero si hay algunos caracteres que no son números (excepto períodos para flotantes) devolverá nulo
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
Salida
string
number