Dynamics AX 2012'de Tüm Ondalıklı Gerçek Sayıyı Dizeye Dönüştürme
Yayınlandı: 16 Şubat 2025 10:41:02 UTC
Bu makalede, Dynamics AX 2012'de tüm ondalık sayıları koruyarak kayan noktalı bir sayının dizeye nasıl dönüştürüleceğini, bir X++ kod örneği de dahil olmak üzere açıklıyorum.
Convert a Real to String with All Decimals in Dynamics AX 2012
Bu gönderideki bilgiler Dynamics AX 2012 R3'e dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir.
Ara sıra gerçek bir sayıyı bir dizeye dönüştürmem gerekiyor. Genellikle, sadece strFmt()'ye geçirmek yeterli oluyor, ancak bu fonksiyon her zaman iki ondalığa yuvarlanıyor, bu da her zaman istediğim şey olmuyor.
Sonra, iyi çalışan num2str() fonksiyonu var, ancak önceden kaç ondalık ve karakter istediğinizi bilmenizi gerektiriyor.
Ya sayıyı sadece tüm basamaklar ve ondalıklarla bir dizeye dönüştürmek isterseniz? Nedense, bunu yapmak şaşırtıcı derecede belirsiz olduğu ve bunu o kadar nadiren yaptığım için genellikle tam olarak nasıl yaptığımı hatırlayamadığım için her zaman Google'da aramama neden olan bir şeydir - çoğu programlama dilinde, gerçek sayıyı boş bir dizeye birleştirebileceğinizi beklerdim, ancak X++ bunu desteklemiyor.
Neyse, bunu yapmanın bulduğum en kolay yolu .NET çağrısı kullanmaktır. Burada da gelişmiş biçimlendirme seçenekleriyle ve seçenekleri olmadan birden fazla seçenek var, ancak yalnızca gerçek bir sayının dizeye gerçekten basit bir şekilde dönüştürülmesini istiyorsanız, bu yeterli olacaktır:
Bu kod AOS'de çalıştırılacaksa (örneğin bir toplu işte), önce gerekli kod erişim iznini onaylamayı unutmayın. Bu durumda .NET kodunu çağırmak için ClrInterop türünde bir InteropPermission'a ihtiyacınız olacak, bu nedenle tam kod örneği aşağıdaki gibi görünecektir:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Bu basit System::Convert işlevinin ondalık nokta karakteri açısından sistemin geçerli yerel ayarını kullandığını unutmayın. Bu sizin için bir sorun olmayabilir, ancak ondalık ayırıcı olarak nokta yerine virgülün kullanıldığı bir bölgede yaşayan benim için, örneğin dizenin diğer sistemler tarafından okunabilir olması gereken bir dosyada kullanılması gerekiyorsa daha fazla işlem gerekebilir.