2013-02-24 15 views
7

मैं प्रोग्रामिंग के लिए बहुत नया हूं। मेरे पास निम्न कोड है:जब मैं फ्लोट का उपयोग करता हूं तो जावा मुझे एफ जोड़ने के लिए मजबूर क्यों करता है?

float f = 18.45f; 

यह ठीक काम करता है। अगर मैं बदल कि करने के लिए:

float f = 18.45; 

जावा त्रुटि के रूप में यह कह:

error: possible loss of precision 

लेकिन double के संदर्भ में अपने वैकल्पिक। लेकिन long में फिर से मुझे एक ही समस्या का सामना करना पड़ रहा है।

जावा मुझे ऐसा करने के लिए क्यों मजबूर करता है, लेकिन double के मामले में नहीं?

+1

'डबल' फ़्लोटिंग पॉइंट नंबरों के लिए डिफ़ॉल्ट प्रकार है। '18.45' निस्संदेह एक 'डबल' – toniedzwiedz

+0

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

+2

ऐसा इसलिए है कि लोगों को अक्सर पूछताछ करने के लिए स्टैक ओवरफ़्लो में नहीं आना चाहिए कि जावा में फ़्लोट गुणा क्यों टूटा हुआ है। –

उत्तर

20

जावा में, 18.45 एक double डेटा प्रकार है जो 64-बिट रखता है। float डेटा प्रकार केवल 32-बिट तक हो सकता है। अतिरिक्त f जोड़ना इसे एक फ्लोट (फ्लोट शाब्दिक) बनाता है। अधिक जानकारी के लिए

Primitive Data Types देखें।

+2

+1 सुपर-सोनिक गति के साथ सही जवाब। :) –

+0

उपरोक्त वोटों के लिए सभी को धन्यवाद :) –

+4

वास्तव में आश्चर्यजनक बात यह है कि वोटों की संख्या नहीं है लेकिन तथ्य यह एकमात्र उत्तर है। मेरा मतलब है, क्या बाधाएं हैं? इस तरह के एक प्रश्न का उत्तर देने के लिए आमतौर पर एक दर्जन समान पदों को लेता है। – toniedzwiedz

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

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