Ondalık tür için bildirim son eki


113

Kodda ondalık bir değişmez kullanmak istersem, m sonekinin var olduğunu gördüm (burada m, para anlamına gelir). Bu, herhangi bir ondalık sayı için uygun mu yoksa daha genel bir atama var mı (d çift anlamına gelir, yani doğrudan bir dönüştürme desteklense de kesinlikle doğru şey değildir).

object decimalValue=2m;

Lütfen dikkat, nesne atamasını örnek olarak aldım, çünkü durumunda ...

decimal decimalValue=2;

... 2'nin derleyici aracılığıyla ondalık olarak yorumlanması gerektiği açıkça ortadadır.

m tamam gibi görünüyor, msdn bunu ondalık tür için örnek olarak kullanıyor.

Yanıtlar:


234

C # dil spesifikasyonu , bölüm 2.4.4'te belgelenmiştir :

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

İnt, byte, sbyte, short, ushort için hiçbir şey yok.


Bir sonek olmasa da char c = 'a', karakterin etrafına kesme işaretleri kullanarak bir karakter de bildirebiliriz .
Kevin Hogg

Daha kullanıcı dostu olan bu Dokümana
Douglas Gaskell

22

Bir sonek olmadan, sayısal bir gerçek literal bir Double olacaktır. M soneki, sayısal gerçek değişmez değerin Ondalık olması gerektiğini belirtir.

Kayan nokta değerleri (Double gibi) üzerindeki aritmetik kesin olmadığından, bunu bilmek gerçekten önemlidir. Örneğin:

object decimalValue=(5.32 + 2.23);

Burada, decimalValue aslında beklenmedik 7.5500000000000007 değerine sahip bir Double içerecektir! 7.55 istersem, bunu yapabilirim:

object decimalValue=(5.32m + 2.23m);

Daha genel bir son ek olup olmadığı hakkındaki sorunuza cevap vermek için , C # 'da Decimal için tek son ek m'dir . Bahsettiğiniz gibi para anlamına gelebilir, ancak Double tarafından kullanıldığı için d dışında bir şey kullanmışlardı!

Daha fazla okuma: ondalık (C # Referansı)


1
Teşekkürler, msdn bağlantısını tam olarak cevabınızı girdiğiniz şekilde soruma girdim ve ekledim. Ancak Hans Passant'ın görevini soneklerden dolayı bu göreve gelecek kişilere çok yardımcı olacak güzel bir liste olduğu için kabul ettim. Ama kesinlikle teşekkürler.
HCL

0

C # 'da Declare Declare için kısa yanıt

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Daha bakın MSDN .

Umut birine yardım eder.


@Thomas, anlıyorum ama sadece ondalık beyan arayanlara kısa cevap vermeye çalıştım, yazıyı silmeli miyim? , bunun yararlı olmadığını mı düşünüyorsun?
shaijut

3
Ben değil kullanışlı olarak görüyorum ama ben de mükemmel olmaktan uzak değilim ve olabilecek başkalarına yardım. İkinci bir okumada onu yararlı bulmazsanız, silebilirsiniz. Birine yardım edeceğini düşünüyorsanız, olduğu gibi bırakın :)
Thomas Ayoub

2
@ThomasAyoub Şahsen, bu Hans'ın yanıtının henüz kapsamadığını ekleyen şeyi görmeyin .
Lankymart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.