» E-Learning Room >
Java
( 14 Views )
Mon 01-09-2551 Time 12:30
Category: Java/
| การแปลงข้อมูลนั้นสำคัญเหมือนกันนะครับ ถ้าเราเจอโจทย์ที่ยาวๆแล้วจะนำมาให้ด้วยกันได้นั้นจะต้องทำการแปลงข้อมูลให้เป็นชนิดเดียวกันก่อน โดยการแปลงข้อมูลนั้น แบ่งเป็น 2 ประเภท | ||||||||||||||
| 1. Implicit type conversion เป็นการแปลงข้อมูลที่ภาษาจาวาทำแบบอัตโนมัติตามความเหมาะสม | ||||||||||||||
| 2. Explicit type conversion (หรือ casting) เป็นการแปลงข้อมูลโดยที่ผู้เขียนโปรแกรมเป็นคนกำหนดเอง | ||||||||||||||
| รูปแบบ (ชนิดข้อมูลที่ต้องการ) นิพจน์ที่ต้องการแปลงชนิดข้อมูล | ||||||||||||||
|
||||||||||||||
|
||||||||||||||
| ปัญหาต่างๆที่อาจเกิด | ||||||||||||||
| 1. byte num1 = 160; | ||||||||||||||
| จากข้อความด้านบนนี้นั้น byte มีค่าสูงสุด 127 เท่านั้น | ||||||||||||||
| วิธีแก้ไข | ||||||||||||||
| byte num1 = (byte) 160; จากการแปลงข้อมูลเบื้องต้นนี้จะทำให้สูญเสียค่าที่แท้จริงจาก 160 จะเป็น -96 | ||||||||||||||
| 2. short a=1; | ||||||||||||||
| short num2 = a + 5; | ||||||||||||||
| จากปัญหาข้อนี้นั้นเป็นการที่ให้ชนิดตัวแปรของ a เป็น short แต่เมื่อเข้าสู่กระบวนการทางคณิตศาสตร์แล้วจะทำให้ short เป็น int [เพราะ int มีนัยสำคัญสูกกว่า short ] แล้วคำตอบที่ได้ก็จะเป็น int ด้วย และจะทำให้ | ||||||||||||||
| วิธีแก้ไข | ||||||||||||||
| short num2 = (short ) a + 5; หรือ int num2 = a + 5; | ||||||||||||||
| 3. int b = 3; | ||||||||||||||
| int num3 = (float) b / 3; | ||||||||||||||
| เนื่องจาก (float) b / 3 จะได้ผลลัพธ์ 1.0 ซึ่งเป็นชนิดข้อมูล float เพื่อไม่ให้เกิดความผิดพลาดจะต้องประกาศ num3 ให้เป็น float เป็นอย่างน้อย หรือไม่ก็เป็น double | ||||||||||||||
| วิธีแก้ไข | ||||||||||||||
| float num3 = (float) b / 3; b จะ กลายเป็น 3.0 เพราะได้แปลงชนิดข้อมูลเป็น float แล้วก็ไป / 3 แต่ยังหารได้เพราะยังเป็น int ฉะนั้นก็จะเปลี่ยนเป็น float จะได้ 3.0 / 3.0 จะได้ผลลัพธ์ 1.0 | ||||||||||||||
| 4 . short xx = 1 , yy = 2 , zz; | ||||||||||||||
| zz = xx + yy; | ||||||||||||||
| เนื่องจาก 1 , 2 เป็น int แล้วผลลัพธ์จากโจทย์ด้านบน zz เป็น stort ดังนั้นจึงทำให้ไม่สามารถเก็บค่าได้ | ||||||||||||||
| วิธีแก้ไข | ||||||||||||||
| zz = (short) (xx + yy); หรือ short xx=1 , yy=2; int zz = xx + yy; | ||||||||||||||
| 5. float yyy = 3.0; | ||||||||||||||
| ชนิดข้อมูลโดยปริยายของข้อมูลแบบ floating-point 8nv double ดังนั้น ค่า 3.0 จึงเป็นชนิด double ไม่ใช่ float ซึ่ง Java ไม่อนุญาตให้นำค่า double ไปเก็บไว้ที่ float เนื่องจาก float มีนัยสำคัญต่ำกว่า double | ||||||||||||||
| เดี่ยวจะ งง กับเข้าไปใหญ่มาดู ตัวอย่าง โปรแกรมเลยดีกว่า | ||||||||||||||
|
||||||||||||||
| อ่าว งง กันใหญ่ เหอะๆ อย่าเพิ่งเครียดครับ เอาไปดูอีก ตัวอย่างก็แล้วกันนะครับ | ||||||||||||||
|
||||||||||||||
แสดงความคิดเห็น “ การแปลงชนิดของข้อมูล Comment”





