Miklix

Mengonversi Bilangan Riil ke String dengan Semua Desimal di Dynamics AX 2012

Diterbitkan: 16 Februari 2025 pukul 10.40.33 UTC

Dalam artikel ini, saya menjelaskan cara mengonversi angka floating point menjadi string dengan tetap mempertahankan semua desimal di Dynamics AX 2012, termasuk contoh kode X++.


Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

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

Informasi dalam posting ini berdasarkan Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau tidak berlaku untuk versi lain.

Sesekali, saya perlu mengonversi angka riil menjadi string. Biasanya, cukup dengan meneruskannya ke strFmt(), tetapi fungsi itu selalu membulatkan ke dua desimal, yang tidak selalu saya inginkan.

Lalu ada fungsi num2str(), yang berfungsi dengan baik, tetapi mengharuskan Anda mengetahui terlebih dahulu berapa banyak desimal dan karakter yang Anda inginkan.

Bagaimana jika Anda hanya ingin angka diubah menjadi string, dengan semua digit dan desimal? Entah mengapa, ini adalah sesuatu yang selalu membuat saya mencari di Google karena sangat sulit dilakukan dan saya sangat jarang melakukannya sehingga saya biasanya tidak dapat mengingat dengan tepat caranya - dalam kebanyakan bahasa pemrograman, saya berharap Anda dapat menggabungkan angka riil ke string kosong, tetapi X++ tidak mendukungnya.

Bagaimanapun, cara termudah yang saya temukan untuk melakukan ini adalah dengan menggunakan panggilan .NET. Ada beberapa pilihan di sini juga, dengan dan tanpa pilihan untuk pemformatan tingkat lanjut, tetapi jika Anda hanya menginginkan konversi yang sangat sederhana dari bilangan real ke string, ini sudah cukup:

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

Jika kode ini akan dijalankan pada AOS (misalnya dalam pekerjaan batch), ingatlah untuk menegaskan izin akses kode yang diperlukan terlebih dahulu. Dalam kasus ini, Anda memerlukan InteropPermission bertipe ClrInterop untuk memanggil kode .NET, jadi contoh kode lengkapnya akan terlihat seperti ini:

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

Perlu diketahui bahwa fungsi System::Convert sederhana ini menggunakan lokal sistem saat ini sehubungan dengan karakter titik desimal. Ini mungkin bukan masalah bagi Anda, tetapi bagi saya yang tinggal di daerah yang menggunakan koma sebagai pemisah desimal, alih-alih titik, mungkin diperlukan pemrosesan lebih lanjut jika string misalnya perlu digunakan dalam file yang harus dapat dibaca oleh sistem lain.

Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Bang Christensen

Tentang Penulis

Mikkel Bang Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.