
Funcion Dec to STR
Publicado por DALSOM (612 intervenciones) el 30/05/2011 22:19:58
Hola a todos,
Cree la funcion DecToStr(num) , esta me debe retornar una cadena conteniendo los decimales de un numero, sin la parte entera del numero, solo los numeros del lado derecho del punto.
Pasa que para los numeros, ofrecen los resultados a continuacion. Fijense en los decimales resultantes :
?dectostr(3.3228964) >>> 322896399999999861307742321514524519443511962890625
?dectostr(3.322896) >>> 322896
?dectostr(392.322896) >>> 3228960000000142827047966420650482177734375
?dectostr(392.32289) >>> 32289
?dectostr(3924.32289) >>> 32288999999991574441082775592803955078125
Fijense en la cantidad de digitos de la parte entera, que cuando sube, la cantidad de decimales devueltos correctamente disminuye.
Como le hago para que cuando llegue aproximadamente
al 5to. o 6to decimal, la division no me devuelva un decimal extra?
Corran la funcion, y veran a lo que me refiero. Esta funcion esta pensada para que no importe el numero de decimales que tenga el numero, me devuelva todos los digitos decimales en una cadena. Ya que al llegar al 5to o 6to digito decimal, no me devuelve el valor correcto.
O puede alguien corregirla !!! Gracias :/)
Function DecToStr
parameters num
local dig as int, dec as float, ret as string
dig = int(num)
dec = num - dig
ret = ""
do while (dec > 0.00)
dig = int((dec*10))
ret = ret + alltrim(str(dig))
dec = (dec*10) - dig
enddo
return ret
Cree la funcion DecToStr(num) , esta me debe retornar una cadena conteniendo los decimales de un numero, sin la parte entera del numero, solo los numeros del lado derecho del punto.
Pasa que para los numeros, ofrecen los resultados a continuacion. Fijense en los decimales resultantes :
?dectostr(3.3228964) >>> 322896399999999861307742321514524519443511962890625
?dectostr(3.322896) >>> 322896
?dectostr(392.322896) >>> 3228960000000142827047966420650482177734375
?dectostr(392.32289) >>> 32289
?dectostr(3924.32289) >>> 32288999999991574441082775592803955078125
Fijense en la cantidad de digitos de la parte entera, que cuando sube, la cantidad de decimales devueltos correctamente disminuye.
Como le hago para que cuando llegue aproximadamente
al 5to. o 6to decimal, la division no me devuelva un decimal extra?
Corran la funcion, y veran a lo que me refiero. Esta funcion esta pensada para que no importe el numero de decimales que tenga el numero, me devuelva todos los digitos decimales en una cadena. Ya que al llegar al 5to o 6to digito decimal, no me devuelve el valor correcto.
O puede alguien corregirla !!! Gracias :/)
Function DecToStr
parameters num
local dig as int, dec as float, ret as string
dig = int(num)
dec = num - dig
ret = ""
do while (dec > 0.00)
dig = int((dec*10))
ret = ret + alltrim(str(dig))
dec = (dec*10) - dig
enddo
return ret
Valora esta pregunta


0