Miklix

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++.


Esta página foi traduzida automaticamente do inglês para torná-la acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, portanto, podem ocorrer erros. Se preferir, você pode visualizar a versão original em inglês aqui:

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:

stringValue = System.Convert::ToString(realValue);

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:

new InteropPermission(InteropKind::ClrInterop).assert();
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:


Compartilhe no BlueskyCompartilhe no FacebookCompartilhe no LinkedInCompartilhe no TumblrCompartilhar em XCompartilhe no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Ele tem mais de 20 anos de experiência como programador de computador/desenvolvedor de software profissional e atualmente trabalha em tempo integral para uma grande empresa europeia de TI. Quando não está blogando, ele dedica seu tempo livre a uma grande variedade de interesses, hobbies e atividades, o que pode, até certo ponto, refletir-se na variedade de tópicos abordados neste site.