ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม
เลือกชนิดข้อมูลตัวเลขให้เหมาะสมโดยทำความเข้าใจขนาด ช่วงค่า และข้อแลกเปลี่ยนด้านความแม่นยำ
ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิดจำนวนเต็มเทียบกับชนิดเลขทศนิยม
- ส่วนหัว cmath: pow sqrt abs round
- ตัวเลขสุ่มด้วยส่วนหัว random
- ขีดจำกัดตัวเลขและพฤติกรรมเมื่อค่าล้น