double

double มีขนาด 64 บิต ใช้เก็บตัวเลขทศนิยม

ตัวแปร a กับ b เก็บค่าเดียวกัน

        double a = 1234.5;
        double b = 1.2345e3;

บางครั้ง double ก็ให้ผลการคำนวณที่น่าสนใจ

public class Test {
    public static void main(String[] args) {
        double d = 10.0 / 0;
        double e = Math.sqrt(-1);
        System.out.println(d);
        System.out.println(e);
    }
}

เอาท์พุทคือ

Infinity
NaN

บางครั้งที่ double ก็ให้ผลการคำนวณที่น่าประหลาดใจ

public class Test {
    public static void main(String[] args) {
        double a = 1.1;
        System.out.println(a * a);
    }
}

เอาท์พุทคือ

1.2100000000000002

ทั้งนี้เนื่องจากสิ่งที่ double เก็บเป็นแค่ค่าประมาณของ 1.1 (ลองแปลงเลข 1.1 ฐานสิบ เป็นเลขฐานสองดู)

ถ้าต้องการให้ได้ผลการคำนวณที่แม่นยำ ต้องใช้คลาส BigDecimal

import java.math.*;

public class Test {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("1.1");
        System.out.println(a.multiply(a));
    }
}

เขียนโปรแกรม Java เบื้องต้น

หนังสือ Java Keywords

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

Advertisements

One thought on “double

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s