แบบฝึกหัด - ค้นพบประเภทจุดทศนิยมลอยตัว
- 8 นาที
ในแบบฝึกหัดนี้ คุณทํางานกับชนิดข้อมูลแบบจุดทศนิยมลอยตัวเพื่อเรียนรู้เกี่ยวกับความแตกต่างที่แตกต่างกันระหว่างข้อมูลแต่ละชนิด
จุดทศนิยมคือชนิดค่าอย่างง่ายที่แสดงถึงตัวเลขทางด้านขวาของจุดทศนิยม ซึ่งแตกต่างจากจํานวนเต็ม มีข้อควรพิจารณาอื่น ๆ ที่เกินค่าสูงสุดและต่ําสุดที่คุณสามารถจัดเก็บไว้ในชนิดจุดทศนิยมลอยตัวที่กําหนดได้
ประเมินชนิดจุดทศนิยมลอยตัว
ก่อนอื่น คุณต้องพิจารณาตัวเลขของความแม่นยําที่แต่ละชนิดอนุญาต ความแม่นยําคือจํานวนตําแหน่งของค่าที่เก็บไว้หลังจุดทศนิยม
ประการที่สอง คุณต้องพิจารณาลักษณะที่จัดเก็บค่าและผลกระทบต่อความแม่นยําของค่า ตัวอย่างเช่น float และ double ค่าจะถูกจัดเก็บภายในในรูปแบบไบนารี (ฐาน 2) ในขณะที่ decimal ถูกจัดเก็บในรูปแบบทศนิยม (ฐาน 10) ทําไมจึงไม่สําคัญ
การดําเนินการทางคณิตศาสตร์ในค่าเลขทศนิยมไบนารีสามารถทําให้เกิดผลลัพธ์ที่อาจทําให้คุณประหลาดใจถ้าคุณใช้คณิตศาสตร์ทศนิยม (ฐาน 10) บ่อยครั้งที่คณิตศาสตร์เลขทศนิยมไบนารีคือประมาณค่าจริง ดังนั้น float และ double มีประโยชน์ เนื่องจากตัวเลขขนาดใหญ่สามารถจัดเก็บได้โดยใช้ฟุตพริ้นท์ของหน่วยความจําขนาดเล็ก อย่างไรก็ตาม float ควรใช้ และ double เฉพาะเมื่อประมาณการเป็นประโยชน์เท่านั้น การคำนวณการกระเซ็นของก้อนหิมะในวิดีโอเกม หากคาดเคลื่อนไปเพียงไม่กี่ส่วนในพันก็ถือว่าใกล้เคียงพอแล้ว
เมื่อคุณต้องการคําตอบที่แม่นยํายิ่งขึ้น คุณควรใช้decimal ค่าแต่ละประเภท decimal มีฟุตพริ้นท์ของหน่วยความจําที่ค่อนข้างมีขนาดใหญ่ แต่การดําเนินการทางคณิตศาสตร์จะให้ผลลัพธ์ที่แม่นยํายิ่งขึ้น ดังนั้น คุณควรใช้ decimal เมื่อทํางานกับข้อมูลทางการเงินหรือสถานการณ์ใด ๆ ที่คุณต้องการผลลัพธ์ที่ถูกต้องจากการคํานวณ
ใช้คุณสมบัติ MinValue และ MaxValue สำหรับประเภทตัวเลขทศนิยมแบบมีเครื่องหมายแต่ละชนิด
ลบหรือใช้ตัวดําเนินการข้อคิดเห็นบรรทัด
//เพื่อให้ข้อคิดเห็นเกี่ยวกับรหัสทั้งหมดจากแบบฝึกหัดก่อนหน้านี้หากต้องการดูช่วงค่าสําหรับชนิดข้อมูลต่าง ๆ ให้อัปเดตรหัสของคุณใน Visual Studio Code Editor ดังนี้:
Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
บนเมนู ไฟล์ Visual Studio Code ให้เลือก บันทึก
ต้องบันทึกไฟล์ Program.cs ก่อนที่จะสร้างหรือเรียกใช้โค้ด
ในแผง EXPLORER ในการเปิดเทอร์มินัลที่ตําแหน่งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProjectจากนั้นเลือก เปิดในเทอร์มินัลแบบรวม
แผงเทอร์มินัลควรเปิดขึ้น และควรมีพร้อมท์คําสั่งที่แสดงว่าเทอร์มินัลเปิดอยู่ไปยังตําแหน่งที่ตั้งโฟลเดอร์ TestProject ของคุณ
ที่พร้อมท์คําสั่งเทอร์มินัล เมื่อต้องการเรียกใช้โค้ดของคุณ ให้พิมพ์ dotnet เรียกใช้ แล้วกด Enter
ถ้าคุณเห็นข้อความ "ไม่สามารถค้นหาโครงการที่จะเรียกใช้ได้" ให้แน่ใจว่าพร้อมท์คําสั่งเทอร์มินัลแสดงตําแหน่งที่ตั้งโฟลเดอร์ TestProject ที่คาดไว้ ตัวอย่าง:
C:\Users\someuser\Desktop\csharpprojects\TestProject>คุณควรเห็นผลลัพธ์ต่อไปนี้:
Floating point types: float : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision) double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision) decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
ตามที่คุณเห็น float และใช้ double สัญประกาศอื่นนอกเหนือจากที่ใช้ decimal เพื่อแสดงค่าที่ใหญ่ที่สุดและน้อยที่สุดเท่าที่เป็นไปได้ แต่ส่อหมายความนี้หมายความว่าอย่างไร?
ถอดรหัสค่าจุดทศนิยมลอยตัวขนาดใหญ่
เนื่องจากชนิดจุดทศนิยมลอยสามารถเก็บตัวเลขขนาดใหญ่ที่มีความแม่นยํา ได้ ดังนั้นค่าของค่าจึงสามารถแสดงได้โดยใช้ เครื่องหมาย" ซึ่งเป็นรูปแบบของสัญลักษณ์ทางวิทยาศาสตร์ที่หมายถึง "คูณ 10 ยกกําลัง" ดังนั้นค่าเช่น5E+2จะเป็นค่า 500 เนื่องจากมีค่าเท่ากับ 5 * 10^2 หรือ 5 x 102
สรุป
- ชนิดจุดทศนิยมลอยตัวเป็นชนิดข้อมูลค่าอย่างง่ายที่สามารถเก็บตัวเลขเศษส่วนได้
- การเลือกประเภทจุดทศนิยมลอยตัวที่เหมาะสมสําหรับแอปพลิเคชันของคุณ คุณจะต้องพิจารณามากกว่าค่าสูงสุดและต่ําสุดที่สามารถเก็บไว้ได้ นอกจากนี้ คุณยังต้องพิจารณาถึงจํานวนค่าที่สามารถเก็บรักษาไว้หลังจากทศนิยม วิธีการจัดเก็บตัวเลข และวิธีการที่เก็บข้อมูลภายในมีผลต่อผลลัพธ์ของการดําเนินการทางคณิตศาสตร์
- บางครั้ง ค่าจุดทศนิยมสามารถแสดงโดยใช้ "เลขชี้กำลัง" เมื่อตัวเลขเพิ่มขึ้นมากเป็นพิเศษ
- มีความแตกต่างพื้นฐานเกี่ยวกับวิธีการจัดการ
decimalคอมไพเลอร์และรันไทม์ที่ตรงกันข้ามกับfloatหรือdoubleโดยเฉพาะอย่างยิ่งเมื่อพิจารณาว่าความถูกต้องจําเป็นจากการดําเนินงานทางคณิตศาสตร์มากน้อยเพียงใด
ตรวจสอบความรู้ของคุณ
คำติชม
หน้านี้มีประโยชน์หรือไม่
ไม่
ต้องการความช่วยเหลือในหัวข้อนี้หรือไม่
ต้องการลองใช้ Ask Learn เพื่อทําให้ชัดเจนหรือแนะนําคุณผ่านหัวข้อนี้หรือไม่