Estoy conviertiendo una larga cadena alfanumérica en numérica con VAL y los resultados son desconcertantes ¿Existe un longitud máxima numérica para esta conversión?
Estos son los resultados que obtengo:
cCadena:= "21030903590010003692142800"
msginfo(cCadena) resultado = 21030903590010003692142800
msginfo(val(cCadena)) resultado = 21030903590010000850000000.000000
¿Existe alguna solución para esto?
Conversión de cadena a número con VAL
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Conversión de cadena a número con VAL
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Conversión de cadena a número con VAL
Me resisto a creer que esto no se pueda hacer en nuestro entorno de programación. El ejemplo práctico es el siguiente: Se trata de calcular los dígitos de control del IBAN de una cuenta bancaria, es decir, dividir por 97 el número 21030903590010003692142800 para sacar el resto.
¿A alguien le ha ocurrido algo parecido? Sería la primera vez que no puedo hacer algo con FWH.
¿A alguien le ha ocurrido algo parecido? Sería la primera vez que no puedo hacer algo con FWH.
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Re: Conversión de cadena a número con VAL
Manuel, No tiene nada que ver FWH, es el compilador y aparentemente no es posible. Quizá se pueda hacer una rutina en C que resuelva esta carencia. Saludos.
Re: Conversión de cadena a número con VAL
Hola, Manuel
Yo me encontre con el mismo problema, al final hice esta función.
Con esta funció conseguí el resto de una division pasandole una cadena de números.
Espero que te haya ayudado.
Pere
Yo me encontre con el mismo problema, al final hice esta función.
Con esta funció conseguí el resto de una division pasandole una cadena de números.
Code: Select all
Function ModString(cString,nDiv)
Local cP1,nPS:= 1,nLS,cP2,cP3
Local cQc:= "",nReste
nLS:= Len(cString)+1
nP1:= Val(Substr(cString,1,1))
nPS++
Do While nPS <= nLS
If nP1 >= nDiv
cQc+= Str( Int(nP1 / nDiv) ,1)
nReste:= Mod(nP1 , nDiv )
Else
cQc+= "0"
nReste:= nP1
EndIf
nP1:= Val( Alltrim(Str(( Int(nReste) ))) + Substr(cString,nPS,1) )
nPS++
Enddo
Return nReste
Pere
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Conversión de cadena a número con VAL
Horacio gracias. Ciertamente me he expresado mal, FWH nada tiene que ver en esto.
Pere, muchíííísimas gracias, no sólo por verificar el problema, sobre todo por el aporte de la función. Es justamente lo que necesitaba, funciona a la perfección. Te estoy muy agradecido.
Pere, muchíííísimas gracias, no sólo por verificar el problema, sobre todo por el aporte de la función. Es justamente lo que necesitaba, funciona a la perfección. Te estoy muy agradecido.
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC