2013-07-25 13 views
5

अगर मैंजावा में 'फ्लोट ए = 3 एफ' और 'फ्लोट ए = 3.0' के बीच क्या अंतर है?

97346822*3f, result is 2.9204048E8, 

प्रदर्शन हालांकि

97346822*3.0 gives me 2.92040466E8. 

कृपया व्याख्या।

+1

अन्य ने अलग-अलग परिणामों के बारे में आपके प्रश्न का उत्तर दिया है। लेकिन मुझे ध्यान रखना चाहिए कि _declaration_ जिसे आप शीर्षक में डालते हैं, 'फ़्लोट ए = 3.0' (या' फ्लोट ए = 3.0') को संकलक द्वारा अस्वीकार कर दिया जाएगा क्योंकि 3.0 को 'डबल' के रूप में माना जाता है और यह पसंद नहीं है आप इसे कम परिशुद्धता वाले एक चर में मजबूर कर रहे हैं (स्पष्ट प्रकार के कलाकार के बिना)। – ajb

+2

शीर्षक और शरीर में प्रश्न अलग क्यों हैं? –

+0

आपको यह जानने की जरूरत है कि 'फ्लोट' 'फ्लोट 'जैसा नहीं है जो' डबल' जैसा नहीं है। एक बार जब आप महसूस करते हैं कि वास्तव में इस प्रकार का मामला है, तो इसमें कोई आश्चर्य की बात नहीं है कि उत्तर अलग हैं। –

उत्तर

7

संख्या 3.0, एक double मूल्य (यह 3.0d के बराबर है) की literal representation है। विभिन्न सटीक बताते हैं कि आपको अलग-अलग परिणाम क्यों मिल रहे हैं - double 64-बिट्स का उपयोग करके संग्रहीत किया जाता है, float 32-बिट्स का उपयोग करता है।

+0

3.0 फ्लोट और डबल दोनों में बिल्कुल प्रतिनिधित्व योग्य है, इसलिए उस विशेष मामले में कोई अंतर नहीं होगा। –

+2

@ पेट्रीसिया: सही है, लेकिन 97346822 * 3 का नतीजा एक फ्लोट में बिल्कुल प्रतिनिधित्व योग्य नहीं है। –

3
97346822*3.0 

को double के रूप में माना जाएगा।

oracle tutorial

डबल डेटा प्रकार के आधार पर एक डबल परिशुद्धता 64-बिट आईईईई 754 चल बिन्दु है। मूल्यों की इसकी सीमा इस चर्चा के दायरे से बाहर है, लेकिन जावा भाषा विशिष्टता के फ़्लोटिंग-पॉइंट प्रकार, प्रारूप और मान अनुभाग में निर्दिष्ट है। दशमलव मानों के लिए, यह डेटा प्रकार आमतौर पर डिफ़ॉल्ट विकल्प होता है।

97346822*3f 

float रूप में माना जाएगा। जबकि 3.0f एक float मूल्य है

0

ये this question से संबंधित निष्कर्ष हैं और मेरा उत्तर यही है।

जबकि 3.0 और 3 एफ दोनों के पास समान मूल्य होता है जब फ़्लोटिंग पॉइंट मानों में डाल दिया जाता है, वास्तविक मान फ़्लोटिंग पॉइंट ऑपरेशन के लिए वर्किंग मेमोरी के रूप में उपयोग किया जाता है। गुणा के हिस्से वाले आंतरिक मान स्वयं फ़्लोटिंग पॉइंट मान में फिट नहीं होते हैं और संशोधित होते हैं, जिसके परिणामस्वरूप प्राप्त परिणामों के बीच 14.0 का अंतर होता है।

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