Converter um real em string com todos os decimais no Dynamics AX 2012
Publicado: 16 de fevereiro de 2025 às 10:40:51 UTC
Última atualização: 12 de janeiro de 2026 às 08:50:55 UTC
Neste artigo, explico como converter um número de vírgula flutuante numa cadeia de caracteres preservando todos os decimais no Dynamics AX 2012, incluindo um exemplo de código X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
A informação neste artigo baseia-se no Dynamics AX 2012 R3. Pode ou não ser válida para outras versões.
De vez em quando, preciso de converter um número real numa sequência. Normalmente, basta passar para strFmt(), mas essa função arredonda sempre para dois decimais, o que nem sempre é o que quero.
Depois há a função num2str(), que funciona bem, mas exige que saibas antecipadamente quantos decimais e caracteres queres.
E se quiser apenas que o número seja convertido para uma cadeia, com todos os dígitos e decimais? Por alguma razão, isto é algo que me faz sempre pesquisar no Google porque é surpreendentemente obscuro e faço-o tão raramente que normalmente não me lembro exatamente como – na maioria das linguagens de programação, esperaria que se pudesse simplesmente concatenar o real numa cadeia vazia, mas o X++ não suporta isso.
De qualquer forma, a forma mais fácil que encontrei para fazer isto é usando uma chamada .NET. Existem várias opções aqui também, com e sem opções de formatação avançada, mas se só quiser a conversão muito simples de um real para uma string, isto será suficiente:
Se este código for para ser executado no AOS (por exemplo, num trabalho em lote), lembre-se de afirmar primeiro a permissão de acesso necessária ao código. Neste caso, vais precisar de uma InteropPermission do tipo ClrInterop para chamar código .NET, por isso o exemplo completo do código seria algo assim:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Tenha em atenção que esta simples função System::Convert utiliza a localização atual do sistema em relação ao carácter de ponto decimal. Isto pode não ser um problema para si, mas para mim, que vivo numa área onde a vírgula é usada em vez de ponto como separador decimal, pode exigir processamento adicional se, por exemplo, a cadeia tiver de ser usada num ficheiro que deve ser legível por outros sistemas.
Leitura adicional
Se gostou deste post, também pode gostar destas sugestões:
- Utilização de uma consulta numa classe de contrato de dados SysOperation no Dynamics AX 2012
- Eliminar uma entidade legal (contas da empresa) no Dynamics AX 2012
- Identificação da classe de documento e da consulta para o serviço AIF no Dynamics AX 2012
