แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่าง Float และ Double

Float และ Double เป็นชนิดข้อมูลภายใต้ชนิด Floating-point ตัวเลขจำนวนจุดลอยตัวเป็นตัวเลขจริงที่มีส่วนประกอบเป็นเศษส่วน ความแตกต่างหลักระหว่าง float และ double คือประเภท float มีที่เก็บข้อมูล 32 บิต ในทางกลับกันประเภท double มีที่เก็บข้อมูล 64 บิต มีความแตกต่างอื่น ๆ ระหว่าง float และ double ที่กล่าวถึงในแผนภูมิเปรียบเทียบที่ระบุด้านล่าง

ตารางเปรียบเทียบ:

พื้นฐานสำหรับการเปรียบเทียบลอยสอง
ความแม่นยำความแม่นยำเดี่ยวความแม่นยำสองเท่า
เกร็ด32 บิต64 บิต
ไบต์4 ไบต์8 ไบต์
ช่วงโดยประมาณ1.4e-045 ถึง 3.4e + 0384.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

  1. ประเภทข้อมูลลอยระบุความแม่นยำเดียวซึ่งหมายความว่าเมื่อเทียบกับสองครั้งที่มีความแม่นยำน้อยกว่าในขณะที่คู่ระบุความแม่นยำสองเท่าเพราะมันเป็นเพียงสองเท่าของข้อผิดพลาดลอยมีข้อผิดพลาดเล็กน้อยเมื่อเทียบกับลอย
  2. ตัวแปรชนิดลอยมีที่เก็บข้อมูล 32 บิตในขณะที่ตัวแปรชนิดสองมีที่เก็บข้อมูล 64 บิตซึ่งคอมไพล์ที่สองคือยิ่งใหญ่กว่าในที่เก็บเมื่อเปรียบเทียบกับลอย
  3. ค่าใน float สามารถอยู่ในช่วง 1.4e-045 ถึง 3.4e + 038 ในขณะที่ค่าของ double type สามารถอยู่ในช่วงจาก 4.9e-324 ถึง 1.8e + 308
  4. บิตที่ใช้แทนค่าลอยมีลักษณะคล้ายกับที่ใช้บิต 1 บิตสำหรับร้องเพลงบิต 8 บิตสำหรับเลขชี้กำลังและ 23 บิตสำหรับการจัดเก็บ mantissa ในทางตรงกันข้ามค่าสองเท่าคล้ายกับที่ 1 บิตใช้สำหรับร้องเพลงบิต 11 บิตสำหรับเลขชี้กำลังและ 52 บิตของมันสำหรับการจัดเก็บ mantissa
  5. เมื่อเปรียบเทียบกับ double float นั้นแม่นยำน้อยกว่าดังนั้นในขณะที่ใช้การคำนวณทางคณิตศาสตร์เป็นสองเท่า

สรุป:

โดยทั่วไปคุณต้องใช้สองครั้งเพราะมันให้ความแม่นยำซึ่งเป็นโมโตหลักของเราเกือบทุกครั้ง

Top