0Pricing
C++ Academy · บทเรียน

ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม

เลือกชนิดข้อมูลตัวเลขให้เหมาะสมโดยทำความเข้าใจขนาด ช่วงค่า และข้อแลกเปลี่ยนด้านความแม่นยำ

ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

โลกของตัวเลขสองแบบ

C++ มีชนิดข้อมูลตัวเลขอยู่สองตระกูล: จำนวนเต็ม (ไม่มีเศษส่วนและมีค่าแม่นยำ) และ จำนวนทศนิยม (เป็นค่าโดยประมาณและมีเศษส่วน) เลือกตระกูลที่เหมาะกับงาน

ชนิดข้อมูลจำนวนเต็ม

ชนิดข้อมูลจำนวนเต็มในตัวและขนาดโดยทั่วไปบนระบบ 64 บิต:

  • char — 1 ไบต์
  • short — 2 ไบต์
  • int — 4 ไบต์
  • long — 4 หรือ 8 ไบต์
  • long long — 8 ไบต์

มีเครื่องหมายเทียบกับไม่มีเครื่องหมาย

เพิ่ม unsigned เพื่อเอาช่วงค่าลบออก การคำนวณแบบไม่มีเครื่องหมายจะวนกลับตามโมดูโล 2^N — บางครั้งมีประโยชน์ แต่บ่อยครั้งก่อให้เกิดข้อผิดพลาดได้ง่าย

unsigned int u = 0;
u -= 1;  // wraps around to 4,294,967,295

จำนวนเต็มขนาดคงที่

ใช้ชนิดข้อมูลใน <cstdint> เมื่อต้องการขนาดที่แน่นอน — เช่น สำหรับโพรโทคอล รูปแบบไฟล์ หรือการรองรับหลายแพลตฟอร์ม

#include <cstdint>
int8_t   tiny  = 100;
int32_t  word  = 100000;
int64_t  big   = 1LL << 40;
uint64_t huge  = 18446744073709551615ULL;

ชนิดข้อมูลจำนวนทศนิยม

ชนิดข้อมูลจำนวนทศนิยมสามชนิดที่มีความละเอียดเพิ่มขึ้นตามลำดับ:

  • float — 32 บิต มีเลขทศนิยมประมาณ 7 หลัก
  • double — 64 บิต มีเลขทศนิยมประมาณ 15 หลัก
  • long double — โดยทั่วไปมีขนาด 80 หรือ 128 บิต

รูปแบบ IEEE 754

จำนวนทศนิยมใช้มาตรฐาน IEEE 754 ซึ่งประกอบด้วยเครื่องหมาย เลขชี้กำลัง และแมนทิสซา สามารถแทนค่าที่ใหญ่มากและเล็กมากได้ แต่ไม่สามารถแทนค่าได้อย่างแม่นยำทั้งหมด

ข้อควรระวังเกี่ยวกับจำนวนทศนิยม

จำนวนทศนิยมส่วนใหญ่ไม่สามารถแทนค่าได้อย่างแม่นยำในระบบเลขฐานสอง 0.1 + 0.2 จึงไม่เท่ากับ 0.3 อย่างแม่นยำ

double sum = 0.1 + 0.2;
std::cout << (sum == 0.3);   // false on most systems
std::cout << sum;            // 0.3 but printed approximately

การเปรียบเทียบจำนวนทศนิยมอย่างปลอดภัย

อย่าเปรียบเทียบจำนวนทศนิยมด้วย == ให้เปรียบเทียบโดยยอมให้มีค่าความคลาดเคลื่อนเล็กน้อย (เอปไซลอน)

bool approxEqual(double a, double b, double eps = 1e-9) {
    return std::abs(a - b) < eps;
}

ค่าพิเศษของจำนวนทศนิยม

จำนวนทศนิยมมีค่าพิเศษสามค่า ได้แก่ NaN (ไม่ใช่ตัวเลข), +inf และ -inf ใช้เงื่อนไขตรวจสอบใน <cmath> เพื่อตรวจหาค่าเหล่านี้

#include <cmath>
double x = std::sqrt(-1.0);
if (std::isnan(x)) std::cout << "Not a number";
if (std::isinf(x)) std::cout << "Infinity";

ควรใช้แต่ละชนิดเมื่อใด

เลือกตามลักษณะของงาน:

  • จำนวนและดัชนี → int หรือ size_t
  • คณิตศาสตร์เชิงวิทยาศาสตร์หรือกราฟิก → double
  • จำนวนเงิน → ห้ามใช้ double โดยเด็ดขาด ให้ใช้จำนวนเต็มที่ปรับสเกลแล้ว (เช่น หน่วยสตางค์) หรือไลบรารีเลขฐานสิบ

ขนาดชนิดข้อมูลแตกต่างกันตามแพลตฟอร์ม

มาตรฐานรับประกันเพียงขนาดขั้นต่ำเท่านั้น int อาจมีขนาด 16, 32 หรือ 64 บิต เพื่อความรองรับได้หลายแพลตฟอร์ม ให้ใช้ชนิดข้อมูลขนาดคงที่จาก <cstdint> ในโครงสร้างข้อมูล

ตรวจสอบอย่างรวดเร็ว

ควรใช้ชนิดข้อมูลใดเพื่อแทนค่าจำนวนเงินอย่างแม่นยำ

สรุปทบทวน

จำนวนเต็มมีค่าแม่นยำ ส่วนจำนวนทศนิยมเป็นค่าโดยประมาณ เลือกใช้ int หรือจำนวนเต็มขนาดคงที่สำหรับจำนวนต่าง ๆ ใช้ double สำหรับคณิตศาสตร์เชิงวิทยาศาสตร์ และอย่าใช้จำนวนทศนิยมแทนจำนวนเงิน เปรียบเทียบจำนวนทศนิยมด้วยค่าความคลาดเคลื่อน อย่าใช้ ==

คำถามที่พบบ่อย

บทเรียน “ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม”

เลือกชนิดข้อมูลตัวเลขให้เหมาะสมโดยทำความเข้าใจขนาด ช่วงค่า และข้อแลกเปลี่ยนด้านความแม่นยำ คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม
  2. ส่วนหัว cmath: pow sqrt abs round
  3. ตัวเลขสุ่มด้วยส่วนหัว random
  4. ขีดจำกัดตัวเลขและพฤติกรรมเมื่อค่าล้น
← กลับไปที่ C++ Academy