go to http://oracle.in.th

Friday, December 18, 2009

ปัญหาเกี่ยวกับการ Convert ค่าของ Type Double

....เมื่อวานได้ไปแก้ Bug ที่ไซท์งานมาครับ

หลังจากลองไล่ๆโปรแกรมดูก็พบ Bug ใน Code (Java) ส่วนที่เกี่ยวกับการเซตค่าลงใน Statement

เมื่อทำการรันโปรแกรมแล้วพบ Error นี้

"Exception occured during BigDecimal conversion."

และ

"Caused by Overflow occured during numeric data type conversion of "1000000000000000000.00" "

ทำให้คาดเดาได้ว่าน่าจะเกี่ยวกับเรื่องของการแปลงค่าครับ

เมื่อ ลองดูข้อมูลแล้วพบว่า Field ที่ชื่อ Payment Amount นั้นมีบาง Record ที่มีค่า "99999999999999999999.00" หรือ เลข 9 จำนวน 20 หลักนั่นเอง

ทำให้โปรแกรมไปตายที่บรรทัดนี้ครับ
stmt.setDouble(15, Double.parseDouble(newCredit[index].getPaymentAmount()));

คาดว่าน่าจะเกี่ยวกับ Type ของข้อมูล จึงทำการเปลี่ยน Type การเซตค่าจาก Double ให้เป็น BigDecimal ดังนี้ครับ
stmt.setBigDecimal(15, new BigDecimal(newCredit[index].getPaymentAmount()));

ผลก็คือโปรแกรมสามารถรันได้โดยไม่ติด Error อะไรเลยครับ ^^


อ้อ!! ลืมบอกไปนิดนึงว่าต้องทำใส่ import java.math.BigDecimal; ไว้ด้วยนะครับ

ถ้าคราวหน้าพบปัญหาอะไรแล้วแก้ไขได้ ก็จะมาเล่าสู่กันฟังอีกนะครับ เผื่อเป็นประโยชน์ต่อหลายๆคนที่เข้ามาอ่าน :P
ข้อเขียนนี้ช่วยฉัน:  

1 comment:

Sanivipa said...

ขอบคุณย้งนะคะ ที่มาเล่าประสบการณ์ให้ฟัง ^^

Post a Comment