ทั้ง double และ float ใช้แทนตัวเลข จุดลอยตัว (floating-point) ใช้ double เมื่อต้องการ ความแม่นยำสูงกว่า
| คุณสมบัติ | double | float |
|---|---|---|
| ความแม่นยำ | 15-16 หลักทศนิยม | 6-7 หลักทศนิยม |
| ขนาด | 64 บิต (8 ไบต์) | 32 บิต (4 ไบต์) |
| บิตเครื่องหมาย (sign) | 1 บิต | 1 บิต |
| บิตเลขชี้กำลัง (exponent) | 11 บิต | 8 บิต |
| บิตความแม่นยำ (mantissa) | 52 บิต | 23 บิต |
| ค่าเริ่มต้น | 0.0d | 0.0f |
| คำแนะนำใช้งาน | คำนวณทั่วไป, ตัวแปรชั่วคราว | อาร์เรย์ตัวเลขขนาดใหญ่ (ประหยัดหน่วยความจำ) |
ตัวอย่างเปรียบเทียบ
public class DoubleFloatTest {
public static void main(String[] args) {
double d = 55.637848675695785;
float f = 25.657933f;
System.out.println("Value of double: " + d);
System.out.println("Value of float: " + f);
}
}
ผลลัพธ์
Value of double: 55.637848675695786
Value of float: 25.657932
สังเกต: float สูญเสียความแม่นยำหลักที่ 7 ขึ้นไป double รักษาความแม่นยำได้ดีกว่ามาก
แนวทางปฏิบัติ: ใช้ double เป็นค่าเริ่มต้นสำหรับการคำนวณ ใช้ float เฉพาะเมื่อต้องการประหยัดหน่วยความจำในอาร์เรย์ขนาดใหญ่