Miklix

Tukar satu Nyata kepada Rentetan dengan Semua Perpuluhan dalam Dynamics AX 2012

Diterbitkan: 19 Mac 2025 pada 9:34:11 PTG UTC

Dalam artikel ini, saya menerangkan cara menukar nombor titik terapung kepada rentetan sambil mengekalkan semua perpuluhan dalam Dynamics AX 2012, termasuk contoh kod X++.


Halaman ini telah diterjemahkan mesin daripada bahasa Inggeris untuk menjadikannya boleh diakses oleh seramai mungkin orang. Malangnya, terjemahan mesin belum lagi merupakan teknologi yang sempurna, jadi ralat boleh berlaku. Jika anda mahu, anda boleh melihat versi bahasa Inggeris asal di sini:

Convert a Real to String with All Decimals in Dynamics AX 2012

Maklumat dalam pos ini berdasarkan Dynamics AX 2012 R3. Ia mungkin sah atau tidak untuk versi lain.

Setiap kali, saya perlu menukar nombor sebenar kepada rentetan. Biasanya, hanya menghantarnya ke strFmt() sudah cukup, tetapi fungsi itu sentiasa membundarkan kepada dua tempat perpuluhan, yang tidak selalu saya mahu.

Kemudian ada fungsi num2str(), yang berfungsi dengan baik, tetapi memerlukan anda tahu terlebih dahulu berapa banyak perpuluhan dan aksara yang anda mahu.

Bagaimana jika anda hanya mahu nombor itu ditukar kepada rentetan, dengan semua digit dan perpuluhan? Entah kenapa, ini adalah sesuatu yang selalu membuat saya mencari di Google kerana ia agak sukar untuk dilakukan dan saya melakukannya sangat jarang sehingga biasanya saya tidak ingat bagaimana - dalam kebanyakan bahasa pengaturcaraan, saya menjangkakan bahawa anda boleh hanya menggabungkan nombor sebenar dengan rentetan kosong, tetapi X++ tidak menyokong itu.

Bagaimanapun, cara yang paling mudah yang saya temui untuk melakukan ini adalah dengan menggunakan panggilan .NET. Terdapat pelbagai pilihan di sini juga, dengan dan tanpa pilihan untuk pemformatan lanjutan, tetapi jika anda hanya mahu penukaran yang sangat mudah dari nombor sebenar kepada rentetan, ini sudah mencukupi:

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

Jika kod ini perlu dijalankan di AOS (contohnya dalam kerja batch), ingat untuk memastikan kebenaran akses kod yang diperlukan terlebih dahulu. Dalam kes ini, anda memerlukan InteropPermission jenis ClrInterop untuk memanggil kod .NET, jadi contoh kod penuh akan kelihatan seperti ini:

new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();

Berhati-hatilah bahawa fungsi mudah System::Convert ini menggunakan kawasan tempatan semasa sistem berkenaan dengan aksara titik perpuluhan. Ini mungkin bukan isu untuk anda, tetapi bagi saya yang tinggal di kawasan di mana koma digunakan berbanding titik sebagai pemisah perpuluhan, ia mungkin memerlukan pemprosesan lanjut jika rentetan itu contohnya perlu digunakan dalam fail yang mesti boleh dibaca oleh sistem lain.

Kongsi di BlueskyKongsi di FacebookKongsi di LinkedInKongsi di TumblrKongsi di XKongsi di LinkedInSematkan pada Pinterest

Mikkel Christensen

Mengenai Pengarang

Mikkel Christensen
Mikkel ialah pencipta dan pemilik miklix.com. Beliau mempunyai lebih 20 tahun pengalaman sebagai pengaturcara komputer/pembangun perisian profesional dan kini bekerja sepenuh masa untuk sebuah syarikat IT Eropah yang besar. Apabila tidak menulis blog, dia menghabiskan masa lapangnya dengan pelbagai minat, hobi dan aktiviti, yang mungkin sedikit sebanyak dapat dilihat dalam pelbagai topik yang diliputi di laman web ini.