Akhiran deklarasi untuk tipe desimal

113

Jika saya ingin menggunakan literal desimal dalam kode, saya telah melihat bahwa ada m-suffix (di mana m berarti uang). Apakah ini sesuai untuk desimal apa pun atau adakah tugas yang lebih umum (d berarti ganda, itu pasti bukan hal yang benar meskipun konversi langsung didukung).

object decimalValue=2m;

Harap dicatat, saya mengambil objek-tugas sebagai contoh, karena dalam kasus ...

decimal decimalValue=2;

... secara implisit jelas bahwa 2 harus diartikan sebagai desimal melalui kompilator.

m sepertinya baik-baik saja, msdn menggunakannya sebagai contoh untuk tipe desimal.

HCL
sumber

Jawaban:

234

Didokumentasikan dalam spesifikasi bahasa C # , bab 2.4.4:

float f = 1.2f;
double d = 1.2d;
uint u = 2u;
long l = 2L;
ulong ul = 2UL;
decimal m = 2m;

Tidak ada untuk int, byte, sbyte, short, ushort.

Hans Passant
sumber
Meskipun bukan sufiks, kami juga dapat mendeklarasikan karakter dengan char c = 'a'menggunakan apostrof di sekitar karakter.
Kevin Hogg
Anda juga dapat merujuk ke Dokumen ini, yang lebih ramah pengguna: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
Douglas Gaskell
22

Tanpa sufiks, literal nyata numerik akan menjadi Double. Akhiran m menentukan bahwa literal nyata numerik harus berupa Desimal.

Ini sebenarnya penting untuk diketahui, karena aritmatika pada nilai floating point (seperti Double) tidak tepat. Misalnya:

object decimalValue=(5.32 + 2.23);

Di sini, decimalValue sebenarnya akan berisi Double, dengan nilai tak terduga 7.5500000000000007! Jika saya ingin 7.55, saya bisa melakukan ini:

object decimalValue=(5.32m + 2.23m);

Untuk menjawab pertanyaan Anda tentang apakah ada sufiks yang lebih umum, m adalah satu - satunya sufiks untuk Desimal di C #. Ini mungkin berarti uang seperti yang Anda sebutkan, tetapi mereka memang menggunakan sesuatu selain d, karena itu digunakan oleh Double!

Bacaan lebih lanjut: desimal (Referensi C #)

Brian MacKay
sumber
1
Terima kasih, saya telah melihat dan memasukkan tautan-msdn ke pertanyaan saya persis seperti Anda memasukkan jawaban Anda. Namun saya menerima posting Hans Passant karena ada daftar bagus yang akan banyak membantu orang-orang yang akan datang ke posting ini karena sufiksnya. Tapi terima kasih yang pasti.
HCL
0

Jawaban singkat untuk Menyatakan Desimal di C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Untuk lebih banyak lihat MSDN .

Harapan membantu seseorang.

shaijut
sumber
@ Thomas, saya mengerti tetapi saya hanya mencoba memberikan jawaban singkat untuk mereka yang mencari deklarasi desimal, haruskah saya menghapus posting? , menurutmu itu tidak berguna?
shaijut
3
Saya melihatnya sebagai tidak berguna tetapi saya jauh dari sempurna dan ini dapat membantu orang lain. Jika, dalam pembacaan kedua Anda merasa tidak berguna, maka Anda dapat menghapusnya. Jika menurut Anda itu akan membantu seseorang, biarkan saja :)
Thomas Ayoub
2
@ThomasAyoub Secara pribadi, jangan lihat apa yang ditambahkan ini yang belum dicakup oleh jawaban Hans .
Lankymart