ถ้าเพื่อนๆเคยเขียน java โดยใช้ object Double แล้ว เช็คเงื่อนไข == ที่ตัวแปรทั้งสองมีค่าเท่ากันแต่ แต่ได้ผลลัพธ์เป็น false เพื่อนก็คงจะเคยเจอเหตุการณ์แบบนี้กันมาบ้านนะครับ โดยปกติแล้วการจะเช็คว่าตัวแฟรทั้งสองมีค่าเท่ากันหรือไม่ใน Double จะไม่ทำการใช้เครื่องหมาย == นะครับแต่จะใช้วิธีนี้แทนครับ

Double x = 5;
Double y = 5;
System.out.println((x-y)<1E-6);

แค่นี้เราก็จะสามารถเช็คได้แล้วว่า Double ทั้งสองมีค่าเท่ากันหรือไม่ ลืมบอกไปว่า 1E-6  คือ 1คูณ10กำลัง-6นั้นเองครับ

Last 5 posts by ta

2 Responses to “Double 5 != Double 5 อะไรกันเนี้ย”

» You can leave a response or Trackback .

  1. test Says:

    ผมว่ามัน compile error ตั้งแต่ Double x= 5; แล้วหละ
    จริงๆ ใช้ doubleValue() method ก็ได้นะ

  2. nolifelover Says:

    เรื่อง double x=5; น่าจะสะเพร่าครับ ต้องเป็น double x = 5.0; แต่ผมไม่แน่ใจบาง version ที่เค้าใช้อาจจะมี autoboxing ครับ

    ส่วนหากใช้ doubleValue() แล้วเอามา == ลองดูกรณีนี้ครับ

    Double x = 5.0002;
    Double y = 5.0005;
    System.out.println(String.format("x=%.05f",x));	System.out.println(x.doubleValue()==y.doubleValue());
    System.out.println((x-y)<1E-6);

    อันแรกจะได้เป็น false ครับ ส่วนหากใช้การเปรียเทียบแบบด้านล่างจะเปรียบเทียบถึงจุดทศนิยมครับ

» Trackbacks/Pingbacks

Leave a Reply