
ตารางเปรียบเทียบ:
พื้นฐานสำหรับการเปรียบเทียบ | ลอย | สอง |
---|---|---|
ความแม่นยำ | ความแม่นยำเดี่ยว | ความแม่นยำสองเท่า |
เกร็ด | 32 บิต | 64 บิต |
ไบต์ | 4 ไบต์ | 8 ไบต์ |
ช่วงโดยประมาณ | 1.4e-045 ถึง 3.4e + 038 | 4.9e-324 ถึง 1.8e + 308 |
การเป็นตัวแทนบิต | 1 บิตหมายถึงเครื่องหมายบิต 8 บิตแทนเลขชี้กำลัง 23 bits เป็นตัวแทนของ mantissa | 1 บิตหมายถึงเครื่องหมายบิต 11 บิตแทนเลขชี้กำลัง 52 bits เป็นตัวแทนของ mantissa |
ความถูกต้อง | แม่นยำน้อยลง | แม่นยำยิ่งขึ้น |
ความหมายของโฟลต
ประเภทข้อมูลลอยเป็นหนึ่งในประเภทจุดลอย ประเภทข้อมูลลอยมีการจัดเก็บแบบ 32 บิต (ซึ่งเท่ากับ 4 ไบต์) สำหรับตัวแปรประเภทลอย การลอยชนิดข้อมูลระบุความแม่นยำเดี่ยว การแทนค่าของ 32 บิตในโฟลตสามารถอธิบายได้ว่า 1 บิตถูกแทนด้วยเครื่องหมายบิต, 8 บิตถูกแทนด้วยเลขชี้กำลังและ 23 บิตแทนด้วย mantissa ช่วงสูงสุดของประเภทลอยคือ 1.4e-045 ถึง 3.4e + 038 เมื่อเปรียบเทียบกับประเภททศนิยมสองจุดประเภทลอยนั้นมีความแม่นยำน้อยกว่าในขณะที่การคำนวณทางคณิตศาสตร์ ให้เราเข้าใจลอยตัวโดยใช้ตัวอย่าง
#include #include int main () {float num1 = sqrt (64.23) ศาล << num1; } // เอาต์พุต 8.00060
ในรหัสข้างต้นคุณสามารถสังเกตเห็นว่าตัวแปรลอย num1 ได้รับการกำหนดค่าที่เป็นโดยฟังก์ชั่น sqrt () ซึ่งจะส่งกลับรากที่สองของค่าที่ถูกส่งผ่านไปยังฟังก์ชั่นนี้ คุณสามารถสังเกตได้ว่าเมื่อพิมพ์ค่าใน num1 มันใกล้เคียงกับค่าที่แน่นอน แต่มันไม่ถูกต้อง ให้เราดูตัวอย่างด้านล่างเมื่อรันโปรแกรมเดียวกันโดยใช้ double เป็นประเภทข้อมูล
คำจำกัดความของ Double
Double เป็นประเภทข้อมูลจุดลอยตัวที่สอง ประเภทข้อมูล double มีที่เก็บข้อมูล 64 บิต (ซึ่งเท่ากับ 8 ไบต์) สำหรับตัวแปรชนิด double มันระบุความแม่นยำสองเท่าเนื่องจากขนาดเป็นสองเท่าของการลอย 64 บิตที่เป็นตัวแทนของ type double สามารถอธิบายได้เนื่องจาก 1 บิตหมายถึง sign bit, 11 bits หมายถึงเลขชี้กำลังและ 52 บิตที่เหลือหมายถึง mantissa ในบรรดาชนิดข้อมูลที่ใช้บ่อยที่สุดคือแบบลอยและสองเท่า double type ถูกใช้ระหว่างการคำนวณทางคณิตศาสตร์และเมื่อมีความต้องการความแม่นยำที่สมบูรณ์แบบ ฟังก์ชันทางคณิตศาสตร์ sin (), cos () และ sqrt () จะคืนค่าสองเท่าเสมอ ให้เราเข้าใจความถูกต้องของประเภทข้อมูลสองครั้งด้วยตัวอย่าง
#include #include int main () {double num1 = sqrt (64.23) ศาล << num1; } // เอาต์พุต 8.0143621
คุณสามารถสังเกตได้ว่าผลลัพธ์ที่ได้รับในตัวอย่างอธิบายลอยตัวแตกต่างจากผลลัพธ์ที่ได้ในตัวอย่างอธิบายสองครั้ง ดังนั้นจากนี้เราสามารถพูดได้ว่าผลลัพธ์ที่ได้จาก double นั้นมีความแม่นยำมากกว่าเมื่อเปรียบเทียบกับ float
ความแตกต่างที่สำคัญระหว่าง Float กับ Double
- ประเภทข้อมูลลอยระบุความแม่นยำเดียวซึ่งหมายความว่าเมื่อเทียบกับสองครั้งที่มีความแม่นยำน้อยกว่าในขณะที่คู่ระบุความแม่นยำสองเท่าเพราะมันเป็นเพียงสองเท่าของข้อผิดพลาดลอยมีข้อผิดพลาดเล็กน้อยเมื่อเทียบกับลอย
- ตัวแปรชนิดลอยมีที่เก็บข้อมูล 32 บิตในขณะที่ตัวแปรชนิดสองมีที่เก็บข้อมูล 64 บิตซึ่งคอมไพล์ที่สองคือยิ่งใหญ่กว่าในที่เก็บเมื่อเปรียบเทียบกับลอย
- ค่าใน float สามารถอยู่ในช่วง 1.4e-045 ถึง 3.4e + 038 ในขณะที่ค่าของ double type สามารถอยู่ในช่วงจาก 4.9e-324 ถึง 1.8e + 308
- บิตที่ใช้แทนค่าลอยมีลักษณะคล้ายกับที่ใช้บิต 1 บิตสำหรับร้องเพลงบิต 8 บิตสำหรับเลขชี้กำลังและ 23 บิตสำหรับการจัดเก็บ mantissa ในทางตรงกันข้ามค่าสองเท่าคล้ายกับที่ 1 บิตใช้สำหรับร้องเพลงบิต 11 บิตสำหรับเลขชี้กำลังและ 52 บิตของมันสำหรับการจัดเก็บ mantissa
- เมื่อเปรียบเทียบกับ double float นั้นแม่นยำน้อยกว่าดังนั้นในขณะที่ใช้การคำนวณทางคณิตศาสตร์เป็นสองเท่า
สรุป:
โดยทั่วไปคุณต้องใช้สองครั้งเพราะมันให้ความแม่นยำซึ่งเป็นโมโตหลักของเราเกือบทุกครั้ง