Converter um real em string com todos os decimais no Dynamics AX 2012
Publicado: 16 de fevereiro de 2025 às 10:40:49 UTC
Última atualização: 12 de janeiro de 2026 às 08:50:54 UTC
Neste artigo, explico como converter um número de ponto flutuante em uma string, preservando todas as casas decimais no Dynamics AX 2012, incluindo um exemplo de código X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
As informações neste post são baseadas no Dynamics AX 2012 R3. Elas podem ou não ser válidas para outras versões.
De vez em quando, preciso converter um número real em uma string. Normalmente, basta passá-lo para a função strFmt(), mas essa função sempre arredonda para duas casas decimais, o que nem sempre é o que eu quero.
Existe também a função num2str(), que funciona bem, mas exige que você saiba antecipadamente quantas casas decimais e caracteres deseja.
Se você quiser apenas converter o número em uma string, com todos os dígitos e decimais? Por algum motivo, isso é algo que sempre me faz pesquisar no Google, porque é surpreendentemente obscuro de se fazer e eu faço tão raramente que geralmente não consigo me lembrar exatamente como — na maioria das linguagens de programação, eu esperaria que você pudesse simplesmente concatenar o número real a uma string vazia, mas o X++ não suporta isso.
De qualquer forma, a maneira mais fácil que encontrei para fazer isso é usando uma chamada .NET. Existem várias opções aqui também, com e sem opções para formatação avançada, mas se você só quer a conversão bem simples de um número real para uma string, isso será suficiente:
Se este código for executado no AOS (por exemplo, em um job em lote), lembre-se de primeiro garantir a permissão de acesso necessária. Nesse caso, você precisará de uma InteropPermission do tipo ClrInterop para chamar código .NET, então o exemplo de código completo seria algo como:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Tenha em mente que esta função simples System::Convert usa a localidade atual do sistema em relação ao caractere de separador decimal. Isso pode não ser um problema para você, mas para mim, que moro em uma região onde a vírgula é usada em vez do ponto como separador decimal, pode exigir processamento adicional se a string, por exemplo, precisar ser usada em um arquivo que deve ser legível por outros sistemas.
Leitura adicional
Se você gostou deste post, você também pode gostar destas sugestões:
- Visão geral rápida do Dynamics AX 2012 SysOperation Framework
- Usando uma consulta em uma classe de contrato de dados SysOperation no Dynamics AX 2012
- Identificando a classe de documento e a consulta para o serviço AIF no Dynamics AX 2012
