คำต่อท้ายการประกาศสำหรับประเภททศนิยม


113

ถ้าฉันต้องการใช้ลิเทอรัลทศนิยมในโค้ดฉันเห็นว่ามีส่วนต่อท้าย m อยู่ (โดยที่ m หมายถึง money) สิ่งนี้เหมาะสมกับทศนิยมหรือไม่หรือมีการกำหนดทั่วไปมากกว่า (d ย่อมาจาก double ซึ่งแน่นอนว่าไม่ใช่สิ่งที่ถูกต้องแม้ว่าจะรองรับการแปลงโดยตรงก็ตาม)

object decimalValue=2m;

โปรดทราบว่าฉันใช้การกำหนดวัตถุเป็นตัวอย่างเพราะในกรณีของ ...

decimal decimalValue=2;

... เป็นที่ชัดเจนโดยปริยายว่า 2 ควรตีความเป็นทศนิยมผ่านคอมไพเลอร์

mดูเหมือนจะโอเคmsdnใช้เป็นตัวอย่างสำหรับประเภททศนิยม

คำตอบ:


234

เอกสารในข้อกำหนดภาษา C #ตอนที่ 2.4.4:

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

ไม่มีอะไรสำหรับ int, byte, sbyte, short, ushort


แม้ว่าจะไม่ใช่คำต่อท้าย แต่เรายังสามารถประกาศอักขระchar c = 'a'โดยใช้เครื่องหมายอะพอสทรอฟีรอบอักขระได้
Kevin Hogg

คุณยังสามารถอ้างถึงเอกสารนี้ซึ่งใช้งานง่ายกว่า: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
Douglas Gaskell

22

หากไม่มีคำต่อท้ายตัวอักษรจริงที่เป็นตัวเลขจะเป็น Double คำต่อท้าย m ระบุว่าลิเทอรัลที่เป็นตัวเลขควรเป็นทศนิยม

สิ่งนี้เป็นสิ่งสำคัญที่ต้องรู้เนื่องจากการคำนวณเกี่ยวกับค่าทศนิยม (เช่น Double) นั้นไม่แน่ชัด ตัวอย่างเช่น:

object decimalValue=(5.32 + 2.23);

ที่นี่ decimalValue จะมี Double โดยมีค่าที่ไม่คาดคิดคือ 7.5500000000000007! ถ้าฉันต้องการ 7.55 ฉันสามารถทำได้:

object decimalValue=(5.32m + 2.23m);

เพื่อตอบคำถามของคุณว่ามีคำต่อท้ายทั่วไปหรือไม่ m เป็นเพียงคำต่อท้ายสำหรับทศนิยมใน C # มันอาจจะเป็นเงินตามที่คุณพูดถึง แต่พวกเขาใช้อย่างอื่นที่ไม่ใช่ d เนื่องจากใช้โดย Double!

อ่านเพิ่มเติม: ทศนิยม (อ้างอิง C #)


1
ขอบคุณฉันได้เห็นและใส่ลิงก์ msdn ลงในคำถามของฉันเหมือนกับที่คุณป้อนคำตอบ อย่างไรก็ตามฉันยอมรับโพสต์ของ Hans Passant เพราะมีรายการที่ดีที่จะช่วยได้มากสำหรับผู้ที่จะมาที่โพสต์นี้เนื่องจากคำต่อท้าย แต่ต้องขอบคุณแน่นอน
HCL

0

คำตอบสั้น ๆ สำหรับDeclare Decimal ใน C #

decimal firstMoney = 141.28m;

O / P: 141.28

decimal secondMoney = 100.00m;

O / P: 100

สำหรับข้อมูลเพิ่มเติมโปรดดูMSDN

ความหวังช่วยใครบางคน


@ โทมัสฉันเข้าใจ แต่ฉันพยายามจะให้คำตอบสั้น ๆ สำหรับผู้ที่ค้นหาการประกาศทศนิยมฉันควรลบโพสต์หรือไม่ คุณคิดว่ามันไม่มีประโยชน์?
shaijut

3
ฉันเห็นว่ามันไม่มีประโยชน์แต่ฉันยังห่างไกลจากความสมบูรณ์แบบและอาจช่วยคนอื่นได้ หากในการอ่านครั้งที่สองคุณพบว่าไม่มีประโยชน์คุณสามารถลบได้ ถ้าคุณคิดว่าจะช่วยใครได้ก็ปล่อยไว้ตามเดิม :)
Thomas Ayoub

2
@ThomasAyoub ส่วนตัวไม่เห็นว่าสิ่งนี้เพิ่มคำตอบของ Hansยังไม่ครอบคลุม
Lankymart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.