Obtener la parte decimal de una variable decimal

Estoy recibiendo como parámetro en una función un dato de tipo decimal
por ejemplo 19, 008
y debo dejarla formateada a string (formato 10,4, rellenar con 0) para grabarla en un txt
así quedaría 00019,0080
Yo hago en mi función:
LPARAMETERS cCadena aS Decimal, nLongitud as Integer, pDecimal as Integer
nEntero=INT(cCadena)
nDecimal= ABS(nEntero - cCadena)
IF pDecimal=1
 nDecimal= nDecimal *1
endif 
IF pDecimal=2
 nDecimal= nDecimal *100
endif 
IF pDecimal=3
 nDecimal= nDecimal *1000
endif 
IF pDecimal=4
 nDecimal= nDecimal *10000
endif 
cCadena= ALLTRIM(STR(nEntero)) + "." + PADL(ALLTRIM(STR(nDecimal)), pDecimal, '0')
cCadenaFormat =PADL(ALLTRIM(cCadena), nLongitud, '0')
RETURN cCadenaFormat
Esta bien hacerl oasi o hay alguna forma más fácil, esta forma me devuelve el valor que quieroe pero no se si se me esta pasando algo por alto
Gracias
Respuesta
1
Espero poder ayudarte:
En el tema de tu valor, recordá que fox por defecto trabaja con punto decimal en lugar de coma, salvo que lo hayas declarado especificamente con set decimal to '.'
Entonces, suponiendo que el valor es : 1236.6548 (mil doscientos treinta y seis y el resto decimal)
Para formatearlo y tener como resultado 01236.6548 en formato texto solo debes usar la función transform(). Así:
mTexto=transf(1236.6548,"@L #####.####")
¿Para probarlo usa? Transf(...
Entonces, el valor recibido por la función debe ser numérico, así esta función lo puede interpretar y darte el resultado formateado.
Si necesitas la coma (,) de igual manera, podrías hacerlo con la función chrTran() pero te recomiendo que en tu txt se guarde con punto ya que al traerlo (por ejemplo) también vuelve con punto. Si de todas manera necesitas la coma, sería algo así:
Tu función:
LParameter mNumero
return chrtran(transf(mNumero,"@L #####.####"),".",",")
La función chrtran() lo que haría es remplazar los puntos que encuentre en el resultado de transf() por una coma.
Espero haber podido ayudarte y si es así, que cierres la pregunta.
Estoy a tu disposición

Añade tu respuesta

Haz clic para o