1. double
ประเภท
Java จัดเตรียมdouble
ประเภทสำหรับการทำงานกับจำนวนจริง (เศษส่วน) ใช้พื้นที่8 bytes
ในหน่วยความจำ (มากเป็นสองเท่าของประเภทint
) และสามารถเก็บค่าในช่วงตั้งแต่ถึง สำหรับการเปรียบเทียบ: ประเภทสามารถเก็บ ค่าในช่วงจากถึง-1.7*10308
+1.7*10308
int
-2*109
+2*109
ในจำนวนจริง ส่วนที่เป็นเศษส่วนจะถูกเขียนไว้หลังจุดทศนิยม ตัวอย่างเช่น 123.456 หรือ 2.5 หรือ 100.00 หรือ 0.01 เมื่อคอมพิวเตอร์จัดการกับตัวเลขดังกล่าว เราจะเรียกมันว่าเลขทศนิยม
อย่างไรก็ตาม นอกจากdouble
ประเภทแล้ว เรายังมีfloat
ประเภท (ซึ่งมีขนาดเพียง 4 ไบต์) ชื่อของมันมาจากจุดลอยตัว และชื่อdouble
มาจากdouble float A double
มีขนาดใหญ่เป็นสองเท่าของ a float
: 8 bytes
เทียบ4
กับ เรียกอีกอย่างว่าเลขทศนิยมที่มีความแม่นยำสองเท่า
2. การสร้างdouble
ประเภท
ประเภทคู่ใช้สำหรับเก็บจำนวนจริง หากต้องการสร้างตัวแปรในรหัสที่สามารถเก็บจำนวนจริงได้ คุณต้องใช้คำสั่งดังนี้:
double name;
โดยที่name คือชื่อของตัวแปร ตัวอย่าง:
คำแถลง | คำอธิบาย |
---|---|
|
price มีการสร้างตัวแปรจริง |
|
weight มีการสร้างตัวแปรจริง |
|
lightSpeed มีการสร้างตัวแปรจริง |
เช่นเดียวกับint
ประเภท คุณสามารถใช้ชวเลขเพื่อสร้างdouble
ตัวแปรหลายตัวพร้อมกันได้:
double name 1, name 2, name 3;
และกำหนดค่าให้กับพวกเขาทันที:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
ตัวอย่าง:
คำแถลง | บันทึก |
---|---|
|
ที่เก็บตัวแปร5.0 |
|
ที่เก็บตัวแปร2.0 |
|
3. การกำหนดจำนวนเต็มและจำนวนจริง
คงจะไม่ดีถ้าสามารถกำหนดจำนวนเต็มให้กับint
ตัวแปรเท่านั้น และจำนวนจริง — ให้กับdouble
ตัวแปร เท่านั้น เราต้องการที่จะสามารถแปลงระหว่างตัวเลขทั้งสองประเภทได้ และ Java ให้ความสามารถนี้
อย่างแรก สามารถกำหนดทั้งจำนวนจริงและจำนวนเต็มให้กับdouble
ตัวแปรได้ เมื่อกำหนดค่าจำนวนเต็ม พวกมันจะถูกแปลงเป็นจำนวนจริง แน่นอน ความแม่นยำบางอย่างอาจหายไปในกระบวนการนี้
คำแถลง | บันทึก |
---|---|
|
ที่เก็บตัวแปร5.0 |
|
ที่เก็บตัวแปร2.0 |
|
ที่ x เก็บตัวแปร1000000.0 |
ประการที่สอง หากนิพจน์บางอย่างเกี่ยวข้องกับจำนวนเต็มและจำนวนจริง จำนวนเต็มจะถูกแปลงเป็นจำนวนจริงก่อน จากนั้นจึงจะดำเนินการกับจำนวนจริงอื่นๆ
คำแถลง | บันทึก |
---|---|
|
ที่ x เก็บตัวแปร5000.0 |
|
ตัวเลข10 จะแสดงบนหน้าจอ |
|
ตัวเลข10.0 จะแสดงบนหน้าจอ |
และสุดท้าย ยังสามารถกำหนดจำนวนจริงให้กับint
ตัวแปร ได้อีกด้วย เมื่อเราทำเช่นนี้ ส่วนที่เป็นเศษส่วนของจำนวนจริงจะถูกยกเลิก — ตัวเลขจะถูกปัดเศษลงเป็นจำนวนเต็มที่ใกล้เคียงที่สุด
นอกจากนี้ คอมไพเลอร์ต้องการให้โปรแกรมเมอร์บันทึกอย่างชัดเจนถึงสิ่งที่เกิดขึ้น (เพื่อให้แน่ใจว่าโปรแกรมเมอร์คนอื่นๆ เข้าใจว่าส่วนที่เป็นเศษส่วนกำลังถูกทิ้ง) โดยทั่วไปแล้วการแปลงดังกล่าวจะมีลักษณะดังนี้ในโค้ด:
integer_variable = (int)(real_number);
ตัวอย่าง:
คำแถลง | บันทึก |
---|---|
|
ที่x เก็บตัวแปร5 |
|
ที่x เก็บตัวแปร5 |
|
ที่x เก็บตัวแปร11 |
4. การหารจำนวนเต็มและจำนวนจริงในภาษาจาวา
เมื่อหารจำนวนเต็มด้วยจำนวนเต็ม เศษที่เหลือจะถูกทิ้งเสมอ แล้วเราจะหาร5
ยัง ไง 2
ให้ได้2.5
?
ในตอนแรก ดูเหมือนว่าตัวเลือกที่ถูกต้องคือ:
double d = 5 / 2;
แต่มันไม่ง่ายอย่างนั้น ปัญหาที่นี่คือเครื่อง Java จะคำนวณค่าของก่อน5 / 2
แล้วจึงกำหนดผลลัพธ์ให้กับd
ตัวแปร และ5 / 2
การดำเนินการคือการหารจำนวนเต็ม นั่นหมายความว่าd
จะมี2
หรือให้แม่นยำยิ่งขึ้น2.0
วิธีแก้ไขที่ถูกต้องคือเขียนตัวเลขอย่างน้อยหนึ่ง ตัวที่เกี่ยวข้องกับการหารเป็นจำนวน จริง (เช่น มีจุดทศนิยม):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
ในแต่ละสำนวนd
จะประกอบด้วย2.5
แต่ถ้าเรากำลังทำงานกับตัวแปรล่ะ เกิดอะไรขึ้นถ้าเรามีรหัสเช่นนี้:
int a = 5;
int b = 2;
double d = a / b;
มีวิธีแก้ไขที่ลื่นไหล (และชัดเจน) ที่นี่ — บังคับให้เครื่อง Java แปลงตัวแปรเป็นจำนวนจริงโดยการคูณด้วยหนึ่งเป็นจำนวนจริง ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
โปรดทราบว่าการคูณและการหารมีความสำคัญเท่ากัน และดำเนินการจากซ้ายไปขวา นั่นหมายความว่า มันสำคัญตรงที่เราคูณ 1.0
ตัวอย่าง:
คำแถลง | ลำดับการดำเนินการ | ผลลัพธ์ |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION