2012-03-16 3 views
13

Float.POSITIVE_INFINITY और Float.MAX_VALUE के बीच क्या अंतर है? जो अधिक है? क्या वे वही हैं?Float.POSITIVE_INFINITY और Float.MAX_VALUE के बीच क्या अंतर है?

मैं उनके पास एक मूल्य की तलाश में आया जो float से अधिक होगा या महानतम को छोड़कर सभी को विफल कर देगा। क्या वह मानदंड पूरा करता है?

धन्यवाद!

उत्तर

18

नहीं, वे बिल्कुल वही नहीं हैं।

Float.MAX_VALUE सबसे बड़ा परिमित मान है जो float में प्रदर्शित किया जा सकता है। अनंतता के अलावा, आपको इससे अधिक मूल्य नहीं मिलेगा। लेकिन आप इस पर सभी प्रकार के अन्य परिचालन कर सकते हैं।

Float.POSITIVE_INFINITY, अच्छी तरह से, अनंत है। एक अनंतता से जुड़े अधिकांश संचालन अनंतता (या तो सकारात्मक या नकारात्मक) के साथ खत्म हो जाएगा।

उदाहरण के लिए:

public class Test { 
    public static void main(String[] args) { 
     testOperations(Float.MAX_VALUE); 
     testOperations(Float.POSITIVE_INFINITY); 
    } 

    public static void testOperations(float input) { 
     System.out.println("input: " + input); 
     System.out.println("input/100: " + input/100); 
     System.out.println("input * 100: " + input * 100); 
     System.out.println("-input: " + (-input)); 
     System.out.println(); 
    } 
} 

आउटपुट:

input: 3.4028235E38 
input/100: 3.4028236E36 
input * 100: Infinity 
-input: -3.4028235E38 

input: Infinity 
input/100: Infinity 
input * 100: Infinity 
-input: -Infinity 
+0

तो, किसी अन्य फ्लोट के साथ तुलना की जाने पर, Float.POSITIVE_INFINITY हमेशा अधिक होगा? – Adam

+2

@Adam: जब तक अन्य फ्लोट 'NaN' नहीं है, हाँ। ('NaN' न तो किसी भी फ्लोट से न तो उससे कम और न ही कम है।) –

+0

बिल्कुल सही। धन्यवाद! – Adam

3

अपने विशिष्ट सवाल का जवाब करने के लिए:

मैं उनके पास एक मूल्य की तलाश में आया जो से अधिक होगा या अन्य सभी फ्लोट या सबसे बड़ी को छोड़कर विफल हो जाएगा। क्या मानदंडों को पूरा करता है?

हाँ, Float.POSITIVE_INFINITY इसकी परिभाषा, केवल Float कि Float.MAX_VALUE से अधिक है द्वारा, है। हालांकि, यह गणितीय परिचालनों के साथ कैसे बातचीत करता है, इस मामले में एक विशेष मामला है।

जावाडोक से:

public static final float POSITIVE_INFINITY:

प्रकार नाव का एक निरंतर पकड़े सकारात्मक अनंत। यह के बराबर है Flat.intBitsToFloat (0x7f800000) द्वारा लौटाया गया मान।

public static final float MAX_VALUE:

एक निरंतर प्रकार नाव का सबसे बड़ा सकारात्मक परिमित मूल्य, (2-2-23) · 2127 पकड़े। यह हेक्साडेसिमल फ्लोटिंग-पॉइंट शाब्दिक 0x1.fffffeP + 127f के बराबर है और Float.intBitsToFloat (0x7f7fffff) के बराबर है।

तो, जैसा कि आप देख सकते हैं, बहुत शाब्दिक परिभाषा के अनुसार कि POSITIVE_INFINITY से अधिक MAX_VALUE एक बिट से है।

उनकी उपयोगिता के संदर्भ में, POSITIVE_INFINITY एक मूल्य प्रदान करता है जिसे आप अन्यथा समस्याग्रस्त गणितीय अभिव्यक्तियों को पहचानने के लिए उपयोग कर सकते हैं। जेडीके स्रोत में इस्तेमाल किया जाने वाला एक 1.0f/0.0f है। इस अभिव्यक्ति का परिणाम POSITIVE_INFINITY है, जो दर्शाता है कि आपने उचित गणित के ऊपरी सीमा को पार कर लिया है, कभी वापस नहीं आना। दो स्थिरांक POSITIVE_INFINITY और NEGATIVE_INFINITY को देखते हुए, आप यह देखने के लिए जांच सकते हैं कि एक सामान्य अभिव्यक्ति ने उपयोगी फ़्लोट की सीमाओं को छोड़ दिया है और क्या यह सकारात्मक या नकारात्मक दरवाजा था।

MAX_VALUE, दूसरी ओर, अधिकतम मूल्य का प्रतिनिधित्व करता है जिस पर आप अभी भी सामान्य गणितीय परिचालन लागू कर सकते हैं। उदाहरण के लिए, MAX_VALUE - 1.0fMAX_VALUE से एक छोटा (बहुत छोटा) छोटा नंबर है। POSITIVE_INFINITY - 1.0f, हालांकि, अभी भी POSITIVE_INFINITY है।

संबंधित मुद्दे