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
Son güncelleme: 12 Ocak 2026 08:52:25 UTC
Bu makalede, Dynamics AX 2012'de ondalık basamaklarını koruyarak kayan noktalı bir sayıyı nasıl dizeye dönüştüreceğinizi, bir X++ kod örneğiyle birlikte açıklıyorum.
Convert a Real to String with All Decimals in Dynamics AX 2012
Bu yazıda yer alan bilgiler Dynamics AX 2012 R3'e dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir.
Bazen gerçek bir sayıyı metin dizesine dönüştürmem gerekiyor. Genellikle, sayıyı strFmt() fonksiyonuna geçirmek yeterli oluyor, ancak bu fonksiyon her zaman iki ondalık basamağa yuvarlıyor ki bu her zaman istediğim şey olmuyor.
Bir de num2str() fonksiyonu var, o da iyi çalışıyor ama önceden kaç ondalık basamak ve karakter istediğinizi bilmenizi gerektiriyor.
Peki ya sadece rakamı, tüm rakamları ve ondalık basamaklarıyla birlikte bir dizeye dönüştürmek isterseniz? Nedense bu, şaşırtıcı derecede karmaşık bir işlem olduğu ve çok nadir yaptığım için tam olarak nasıl yapıldığını hatırlayamadığım için sürekli Google'da arama yapmama neden oluyor. Çoğu programlama dilinde, gerçek sayıyı boş bir dizeye eklemenin yeterli olacağını düşünürdüm, 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çenekleri olan ve olmayan birden fazla seçenek var, ancak sadece gerçek bir sayıyı basitçe bir dizeye dönüştürmek istiyorsanız, bu yeterli olacaktır:
Bu kodun AOS üzerinde (örneğin bir toplu iş içinde) çalıştırılması gerekiyorsa, öncelikle gerekli kod erişim iznini vermeyi 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 şöyle görünecektir:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Bu basit System::Convert fonksiyonunun, ondalık nokta karakteriyle ilgili olarak 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 kullanılan 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 gerektirebilir.
Daha Fazla Okuma
Bu yazıyı beğendiyseniz, şu öneriler de ilginizi çekebilir:
- Dynamics AX 2012'de AIF Hizmeti için Belge Sınıfını ve Sorguyu Tanımlama
- Dynamics AX 2012'de "Veri sözleşmesi nesnesi için meta veri sınıfı tanımlanmadı" hatası
- Dynamics AX 2012'de AIF Belge Hizmetlerini Doğrudan X++'dan Çağırma
