Miklix

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.


Bu sayfa, mümkün olduğunca çok kişi tarafından erişilebilir olması amacıyla İngilizce'den makine çevirisiyle çevrilmiştir. Ne yazık ki, makine çevirisi henüz mükemmelleştirilmiş bir teknoloji değildir, bu nedenle hatalar meydana gelebilir. Tercih ederseniz, orijinal İngilizce versiyonu buradan görüntüleyebilirsiniz:

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:

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

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:

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


Bluesky'de paylaşFacebook'ta paylaşLinkedIn'de paylaşTumblr'da paylaşX'te paylaşLinkedIn'de paylaşPinterest'e Pinleyin

Mikkel Christensen

Yazar Hakkında

Mikkel Christensen
Mikkel miklix.com'un yaratıcısı ve sahibidir. Profesyonel bilgisayar programcısı/yazılım geliştiricisi olarak 20 yılı aşkın deneyime sahiptir ve şu anda büyük bir Avrupa BT şirketinde tam zamanlı olarak çalışmaktadır. Blog yazmadığı zamanlarda, boş zamanlarını çok çeşitli ilgi alanları, hobiler ve aktivitelerle geçirmektedir ve bu da bir dereceye kadar bu web sitesinde kapsanan konuların çeşitliliğine yansıyabilir.