Convertir un número real en una cadena con todos los decimales en Dynamics AX 2012
Publicado: 16 de febrero de 2025, 10:40:29 UTC
En este artículo, explico cómo convertir un número de punto flotante en una cadena conservando todos los decimales en Dynamics AX 2012, incluido un ejemplo de código X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
La información de este artículo se basa en Dynamics AX 2012 R3. Puede que sea válida o no para otras versiones.
De vez en cuando, necesito convertir un número real en una cadena. Normalmente, basta con pasarlo a strFmt(), pero esa función siempre redondea a dos decimales, lo que no siempre es lo que quiero.
Luego está la función num2str(), que funciona bien, pero requiere que sepas de antemano cuántos decimales y caracteres quieres.
¿Qué pasa si solo quieres convertir el número en una cadena, con todos los dígitos y decimales? Por alguna razón, esto es algo que siempre me lleva a buscar en Google porque es sorprendentemente difícil de hacer y lo hago tan pocas veces que, por lo general, no puedo recordar exactamente cómo hacerlo. En la mayoría de los lenguajes de programación, esperaría que pudieras concatenar el número real en una cadena vacía, pero X++ no lo admite.
De todos modos, la forma más sencilla que he encontrado para hacerlo es mediante una llamada .NET. También hay varias opciones, con y sin opciones para formato avanzado, pero si solo quieres la conversión realmente simple de un número real a una cadena, esto será suficiente:
Si este código se va a ejecutar en el AOS (por ejemplo, en un trabajo por lotes), recuerde primero solicitar el permiso de acceso al código necesario. En este caso, necesitará un InteropPermission de tipo ClrInterop para llamar al código .NET, por lo que el ejemplo de código completo se vería así:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Tenga en cuenta que esta sencilla función System::Convert utiliza la configuración regional actual del sistema con respecto al carácter de punto decimal. Puede que esto no sea un problema para usted, pero para mí, que vivo en una zona donde se utiliza la coma en lugar del punto como separador decimal, puede requerir un procesamiento adicional si, por ejemplo, la cadena debe utilizarse en un archivo que debe ser legible por otros sistemas.