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

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.


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 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:

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

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:

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

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

Mikkel Bang Christensen

Yazar Hakkında

Mikkel Bang 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.