Converter um real em string com todos os decimais no Dynamics AX 2012
Publicado: 16 de fevereiro de 2025 às 10:40:49 UTC
Neste artigo, explico como converter um número de ponto flutuante em uma string 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
As informações neste post são baseadas no Dynamics AX 2012 R3. Podem ou não ser válidas para outras versões.
De vez em quando, preciso converter um número real para uma string. Normalmente, apenas passá-lo para strFmt() é o suficiente, mas essa função sempre arredonda para duas casas decimais, o que nem sempre é o que eu quero.
Depois, há a função num2str(), que funciona bem, mas exige que você saiba com antecedência quantos decimais e caracteres deseja.
E se você quiser apenas converter o número para uma string, com todos os dígitos e decimais? Por alguma razão, isso é algo que sempre me faz pesquisar no Google porque é surpreendentemente obscuro de fazer e eu faço isso tão raramente que geralmente não consigo lembrar exatamente como - na maioria das linguagens de programação, eu esperaria que você pudesse apenas concatenar o real para uma string vazia, mas o X++ não suporta isso.
De qualquer forma, a maneira mais fácil que encontrei de fazer isso é usando uma chamada .NET. Há várias opções aqui também, com e sem opções para formatação avançada, mas se você quiser apenas a conversão realmente simples de um real para uma string, isso será suficiente:
Se esse código for executado no AOS (por exemplo, em um trabalho em lote), lembre-se de declarar a permissão de acesso ao código necessária primeiro. Nesse caso, você precisará de uma InteropPermission do tipo ClrInterop para chamar o código .NET, então o exemplo de código completo seria algo como isto:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Esteja ciente de que esta função simples System::Convert usa a localidade atual do sistema com relação ao caractere de ponto decimal. Isso pode não ser um problema para você, mas para mim, que moro em uma área 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.