ความแตกต่างที่สำคัญ – ลอยเทียบกับสองเท่า
ในการเขียนโปรแกรม จำเป็นต้องเก็บข้อมูล ข้อมูลถูกเก็บไว้ในหน่วยความจำ ตำแหน่งหน่วยความจำที่เก็บข้อมูลเรียกว่าตัวแปร ตำแหน่งหน่วยความจำแต่ละตำแหน่งสามารถจัดเก็บข้อมูลบางประเภทได้ ขนาดหน่วยความจำสำหรับข้อมูลแต่ละประเภทจะแตกต่างกัน ในภาษาการเขียนโปรแกรมเช่น Python โปรแกรมเมอร์ไม่จำเป็นต้องประกาศชนิดของตัวแปร ในภาษาการเขียนโปรแกรมเช่น Java โปรแกรมเมอร์ควรประกาศประเภทตัวแปร มีข้อมูลหลายประเภทเช่น char, int, float และ double ชนิดข้อมูลถ่านใช้เพื่อเก็บค่าอักขระตัวเดียว ชนิดข้อมูล int ใช้เพื่อเก็บค่าตัวเลขโดยไม่มีจุดทศนิยมชนิดข้อมูลทศนิยมและทศนิยมใช้เพื่อเก็บค่าตัวเลขที่มีจุดทศนิยม บทความนี้กล่าวถึงความแตกต่างระหว่าง float และ double ความแตกต่างที่สำคัญระหว่าง float และ double คือ float เป็นประเภทข้อมูลจุดลอยตัว IEEE 754 ที่มีความแม่นยำ 32 บิตในขณะที่ double เป็นประเภทข้อมูลจุดทศนิยม IEEE 754 64 บิตที่มีความแม่นยำสองเท่า
ลอยคืออะไร
ลอยเป็นจุดลอยตัวแบบ 32 บิตที่มีความแม่นยำเพียงจุดเดียว เป็นชนิดข้อมูลที่กำหนดไว้ล่วงหน้าซึ่งรองรับโดยภาษาโปรแกรม เช่น Java ในการประกาศตัวแปร float จะใช้คำสำคัญ 'float' ดังนั้นจึงไม่สามารถใช้กับชื่อตัวระบุ เช่น ชื่อเมธอดและชื่อตัวแปรได้ อ้างอิงโปรแกรมด้านล่าง
รูปที่ 01: โปรแกรม Java พร้อม float Data Type
ตามโปรแกรมด้านบน ตัวเลขเป็นตัวแปรที่สามารถเก็บเลขทศนิยมได้ ที่นี่ -20.5f ถูกใช้แทน -20.5 -20.5 เป็นตัวอักษรคู่ เพื่อระบุคอมไพเลอร์เพื่อเก็บค่าเป็น float โปรแกรมเมอร์ควรเขียน f หรือ F
ดับเบิ้ลคืออะไร
ดับเบิ้ลเป็นจุดลอยตัวแบบ 64 บิตที่มีความแม่นยำสองเท่า เป็นประเภทข้อมูลที่กำหนดไว้ล่วงหน้า ในการประกาศตัวแปร double จะใช้คำสำคัญ 'double' ดังนั้นจึงไม่สามารถใช้สำหรับชื่อตัวระบุ เช่น ชื่อเมธอดและชื่อตัวแปร อ้างอิงโปรแกรมด้านล่าง
รูปที่ 02: โปรแกรม Java พร้อมประเภทข้อมูลสองเท่า
ตามโปรแกรมข้างบนนี้ ตัวเลขเป็นตัวแปรประเภทดับเบิ้ล การพิมพ์ตัวเลขจะให้ผลลัพธ์เป็น -20.5 ใช้หน่วยความจำ 64 บิตในการจัดเก็บค่า หากโปรแกรมเมอร์เขียนด้วย -20.5 ถือว่าเป็นสองเท่า เขายังสามารถเขียนมันเป็น -20.5d การเขียน 'd' เป็นตัวเลือก
การแคสต์ประเภทสามารถทำได้กับประเภทข้อมูล เป็นกระบวนการแปลงข้อมูลประเภทหนึ่งเป็นข้อมูลประเภทอื่นเมื่อกำหนดประเภทข้อมูลที่เล็กกว่าให้กับประเภทข้อมูลที่ใหญ่กว่า ไม่จำเป็นต้องแคสต์ การขยายเกิดขึ้นในหน่วยไบต์ สั้น int ยาว ลอย สองลำดับ เมื่อกำหนดประเภทข้อมูลที่ใหญ่กว่าให้กับประเภทข้อมูลขนาดเล็ก จำเป็นต้องทำการแคสต์
รูปที่ 03: การแคสติ้ง
ตามโปรแกรมด้านบน num1 และ num2 มีประเภทข้อมูล float ผลรวมถูกกำหนดให้กับผลรวมของตัวแปร มันคือลูกลอย เนื่องจาก float เป็นประเภทข้อมูลที่เล็กกว่าเมื่อเปรียบเทียบกับ double จึงสามารถกำหนดให้กับตัวเลขตัวแปร double ได้โดยตรงโดยไม่ต้องส่งประเภท
x และ y สามารถจัดเก็บประเภทข้อมูลได้สองเท่า ผลรวมถูกกำหนดให้กับตัวแปร z นอกจากนี้ยังสามารถเก็บเป็นสองเท่า ต้องใช้การหล่อแบบเพื่อกำหนดประเภทข้อมูลที่ใหญ่กว่าให้กับประเภทข้อมูลที่เล็กกว่า ดังนั้น ในการจัดเก็บค่า double ให้กับตัวแปร float จำเป็นต้องทำการหล่อแบบ เนื่องจาก double เป็นชนิดข้อมูลที่ใหญ่กว่า float
ความคล้ายคลึงกันระหว่าง float และ double คืออะไร
- ทั้ง float และ double เป็นประเภทข้อมูลที่กำหนดไว้ล่วงหน้าซึ่งรองรับโดยภาษาโปรแกรม เช่น Java
- ทั้งแบบลอยและแบบคู่ไม่ได้ใช้สำหรับความแม่นยำเช่นสกุลเงิน
โฟลตกับดับเบิ้ลต่างกันอย่างไร
ลอยเทียบกับสองเท่า |
|
ลอยเป็นประเภทข้อมูลจุดลอยตัว IEEE 754 32 บิตที่มีความแม่นยำเดียว | ดับเบิ้ลเป็นสองเท่าความแม่นยำ 64 บิต IEEE 754 ชนิดข้อมูลทศนิยม |
จำนวนไบต์ | |
ลอยยาว 4 ไบต์ | คู่มีความยาว 8 ไบต์ |
ค่าเริ่มต้น | |
ค่าเริ่มต้นของ float คือ 0.0f. | ค่าดีฟอลต์ของ double คือ 0.0d |
คำหลัก | |
คำหลัก 'float' ใช้เพื่อประกาศค่าลอยตัว | คำหลัก 'คู่' ใช้เพื่อประกาศค่าสองเท่า |
หน่วยความจำที่ต้องการ | |
ลอยต้องใช้หน่วยความจำน้อยกว่าสองเท่า | ดับเบิ้ลต้องใช้ความจำมากกว่าโฟลต |
สรุป – ลอยเทียบกับสองเท่า
ในการเขียนโปรแกรม จำเป็นต้องเก็บข้อมูล ข้อมูลเหล่านั้นถูกเก็บไว้ในตำแหน่งหน่วยความจำและเรียกว่าตัวแปร ตัวแปรแต่ละตัวเก็บข้อมูลประเภทเฉพาะ มีประเภทข้อมูลเช่น int, char, double และ float เป็นต้น บทความนี้กล่าวถึงความแตกต่างระหว่างข้อมูลสองประเภทที่เป็น float และ doubleความแตกต่างระหว่าง float และ double คือ float เป็นประเภทข้อมูลซึ่งเป็นจุดลอยตัว IEEE 754 32 บิตที่มีความแม่นยำเพียงจุดเดียวในขณะที่ double เป็นประเภทข้อมูลซึ่งเป็นจุดลอยตัว IEEE 754 64 บิตที่มีความแม่นยำสองเท่า