2012-01-19 15 views
16

मुझे एक इंट नंबर क्यों बड़ा मिलता है जहां लंबे समय तक अधिकतम और अधिकतम आवंटित किया जाता है?जावा लंबी संख्या बहुत बड़ी त्रुटि?

/* 
long: The long data type is a 64-bit signed two's complement integer. 
It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of   9,223,372,036,854,775,807 (inclusive). 
Use this data type when you need a range of values wider than those provided by int. 
*/ 
package Literals; 

public class Literal_Long { 
    public static void main(String[] args) { 
     long a = 1; 
     long b = 2; 
     long min = -9223372036854775808; 
     long max = 9223372036854775807;//Inclusive 

     System.out.println(a); 
     System.out.println(b); 
     System.out.println(a + b); 
     System.out.println(min); 
     System.out.println(max); 
    } 
} 
+1

आप 'Long.MIN_VALUE' और' Long.MAX_VALUE' या '1L << -1' और उपयोग कर सकते हैं' -1L >>> 1' –

उत्तर

54

जावा के सभी शाब्दिक संख्या डिफ़ॉल्ट ints, जो -21474836482147483647 समावेशी तक होती है द्वारा कर रहे हैं।

आपका शाब्दिक तो यह संकलन आप इंगित करने के लिए वे long शाब्दिक (यानी प्रत्यय L के साथ) कर रहे हैं की जरूरत है बनाने के लिए इस सीमा के बाहर हैं,:

long min = -9223372036854775808L; 
long max = 9223372036854775807L; 

ध्यान दें कि जावा दोनों अपरकेस और लोअरकेस Ll का समर्थन करता है, लेकिन मेरा सुझाव है नहीं लोअरकेस l का उपयोग कर, क्योंकि यह लग रहा है 1 एक तरह:

long min = -9223372036854775808l; // confusing: looks like the last digit is a 1 
long max = 9223372036854775807l; // confusing: looks like the last digit is a 1 

Java Language Specification ही

एक पूर्णांक शाब्दिक के लिए प्रकार की लंबी अगर यह एक ASCII पत्र एल या एल (ell) के साथ प्रत्यय है; अन्यथा यह प्रकार int (§4.2.1) है।

+0

पंडिताऊ होने के लिए: तुम भी एक छोटे से 'एल इस्तेमाल कर सकते हैं '। – helpermethod

+8

@ ओलिवर वेइलर मैं कहूंगा कि, पैडेंटिक होने के लिए, आप ** ** कर सकते हैं, लेकिन ** छोटे __l__ 'का उपयोग नहीं करना चाहिए क्योंकि यह __1__ जैसा दिखता है। – TC1

+0

यदि आप खराब फ़ॉन्ट का उपयोग करते हैं, तो यह केवल 1 जैसा दिखता है, लेकिन निश्चित रूप से, भ्रम का जोखिम क्यों है। – Bladt

17

आपको संकलक को यह कहने के लिए L का उपयोग करना चाहिए कि यह एक लंबा शाब्दिक है।

long min = -9223372036854775808L; 
long max = 9223372036854775807L;//Inclusive 
संबंधित मुद्दे