long

long มีขนาด 64 บิต ค่ามากที่สุดที่เก็บในตัวแปรนี้ได้คือ 9223372036854775807 (เท่ากับ Long.MAX_VALUE) แต่โค้ดต่อไปนี้กลับคอมไพล์ไม่ผ่าน

public class Test {
    public static void main(String[] args) {
        long max = 9223372036854775807;
        System.out.println(max);
    }
}

เพราะว่าคอมไพเลอร์มองว่าจำนวนเต็มเป็น int ซึ่งเลข 92233… ใหญ่เกินไป ไม่สามารถเก็บใน int ได้ โปรแกรมจึงคอมไพล์ไม่ผ่าน

วิธีแก้ไขคือใส่ suffix L ต่อท้าย

public class Test {
    public static void main(String[] args) {
        long max = 9223372036854775807L;
        System.out.println(max);
    }
}

อันที่จริงใช้ L เล็กก็ได้ แต่ไม่ควรจะใช้ตัวเล็ก เพราะอาจจะสับสนกับเลข 1

ถึงแม้ long จะมีขนาดใหญ่ แต่ก็ไม่สามารถหาคำตอบของ 123456789012345678901234567890 คูณกับ 567890123456789012345678901234 ได้ ถ้าต้องการคิดเลขจำนวนเต็มขนาดใหญ่ๆ ให้ใช้คลาส BigInteger

import java.math.*;

public class Test {
    public static void main(String[] args) {
        BigInteger a = new BigInteger("123456789012345678901234567890");
        BigInteger b = new BigInteger("567890123456789012345678901234");

        System.out.println(a.multiply(b));
    }
}

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

หนังสือ Java Keywords

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

One thought on “long

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