Spanish Necesito convertir una cadena de caracteres a números

ocalle

Active Member
Licensed User
Hola a todos, tengo una variable del tipo string y necesito convertirla a numeros decimales para poder hacer operaciones matematicas, Hay una forma sencilla?

Ej
B4X:
Dim cadena as string
Dim nro as int
cadena="1298398984"
´y con la conversion puedo por ejemplo multiplicar
nro=xxxx(cadena)

nro= nro * 1.31415

desde ya muchas gracias
 

cas6678

Active Member
Licensed User
Longtime User
nro=cadena

Previamente habras tenido que verificar que cadena sea un numero y que no tenga caracteres no numericos

B4X:
if isnumber(cadena) then
   nro=cadena
else
   log"no es un numero"
end if

Posiblemente haya alguna opcion mejor. ;)
 

cas6678

Active Member
Licensed User
Longtime User
Solo eso

B4X:
Dim Numeros As Int

Numeros = cadena
Si no recuerdo mal porque estoy hablando de memoria si en la cadena hay algo mas que numeros o no hay nada te da error. Por ejemplo si la cadena es ""
 

JCO

Active Member
Licensed User
Longtime User
necesito convertirla a numeros decimales
Cuidado con los decimales. Si en la cadena de texto el separador de decimales es la coma, la conversión no funcionará correctamente. Antes de dar los pasos que han sugerido los compañeros, sustituye las comas por puntos:

B4X:
cadena = cadena.Replace(",", ".")
 

rscheel

Well-Known Member
Licensed User
Longtime User
Si no recuerdo mal porque estoy hablando de memoria si en la cadena hay algo mas que numeros o no hay nada te da error. Por ejemplo si la cadena es ""

Funciona correctamente, solo si lo vas a multiplicar un numero entero con un decimal, la variable que reciba el resultado debe ser un Double no un int.

B4X:
Dim Numero As Int
Dim Cadena As String = "1298398984"

Numero = Cadena
Log("Resultado: "& (Numero * 1.31415))

'Resultado: 1.7062910248235998E9
 

cas6678

Active Member
Licensed User
Longtime User
Creo que no nos estamos entendiendo. Si que funciona. Solo digo que hay que tomar la precaucion que la cadena no venga con algo no numerico como "1234AB"
 

rscheel

Well-Known Member
Licensed User
Longtime User
Creo que no nos estamos entendiendo. Si que funciona. Solo digo que hay que tomar la precaucion que la cadena no venga con algo no numerico como "1234AB"

Claro que si, pero el ejemplo de el solo son numero, no trae letras ni puntos ni comas, si ya busca convertir letras a números o extraer las letras de los números o validar la cadena es otro tema.
 

ocalle

Active Member
Licensed User
Hola a todos gracias por el soporte, tuve que dimensionar numero como double para que maneje los decimales, lo que estaba obteniendo es la memoria disponible en el telefono, asi me funciona

B4X:
OS.Initialize("")
Dim numero As Double


numero=OS.AvailableExternalMemorySize

    lbl3.Text=(numero  / 1000000000) & " mem ext libre"
 
Top