2013-01-21 86 views
5

क्या कोई ऐसा मामला है जहां ये दो विधियां एक ही इनपुट दिए गए विभिन्न मान वापस कर देगी?फ्लोट बनाम डबल (जावा में)

int compare1(float a, float b) 
{ 
    return Double.compare(a, b); 
} 

int compare2(float a, float b) 
{ 
    return Float.compare(a, b); 
} 

इसी तरह, यह सच (या गलत) कि किसी भी संख्या एक जावा के फ्लोट में संग्रहणीय किसी भी परिशुद्धता खोने के बिना एक जावा की डबल में संग्रहित किया जा सकता है?

धन्यवाद

उत्तर

8

हाँ; फ्लोट करने के लिए युगल कास्टिंग अलग-अलग परिणाम प्राप्त कर सकते हैं।

a और b के बीच का अंतर एक नाव में दिखाने के लिए बहुत छोटा है, तो compare2() वापस आ जाएगी 0 जबकि compare1() नहीं होगा।


तुम बस सवाल उल्टा करने के लिए आप क्या पूछ रहे थे संपादित। नया जवाब है:

मुझे लगभग निश्चित है कि वे हमेशा वही होंगे।

+0

फ़्लोट के बारे में मेरे प्रश्न के बारे में क्या है डबल का सबसेट? – user1508893

+0

@ user1508893: मैं निश्चित रूप से निश्चित हूं कि यह है, लेकिन मुझे निश्चित रूप से पता नहीं है। – SLaks

+0

दरअसल, मैंने इस सवाल में कुछ गलती की। बस इसे अद्यतन किया। माफ़ कीजिये! – user1508893

1

double आपको float की तुलना में दशमलव स्थान से परे सटीकता के अधिक बिट देता है। यदि वे सभी अतिरिक्त बिट शून्य हैं तो आपके पास फ्लोट के समान मूल्य है। तो हाँ, सभी float एस को सटीकता खोए बिना double एस में परिवर्तित किया जा सकता है।

+1

यह आपको 127 के मुकाबले 1023 का अधिकतम एक्सपोनेंट भी देता है। – EJP

+0

@EJP: बहुत सच! – Eduardo