2010-02-16 12 views
5

ठीक है। मैं दीवार के खिलाफ अपने सिर को दो घंटों के लिए झुका रहा हूं, अब यह पता लगाने की कोशिश कर रहा है कि क्यों दुनिया में double answer = 364/365; मुझे बता रहा है कि answer 0 है या उस मामले के लिए डबल का कोई अन्य संयोजन, यह सिर्फ दशमलव को छोटा कर रहा है और मैं बस क्यों नहीं पता क्यों। कृपया सहायता कीजिए!!!जावा में डबल टाइप का उपयोग करने में त्रुटि ... यह इतना आसान होना चाहिए, मुझे लगभग शर्म आती है मैं इसे यहां पूछ रहा हूं

उत्तर

8

364/365 पूर्णांक विभाजन (दशमलव को छोटा करता है) निष्पादित करता है।

double answer = 364.0/365; को फ़्लोटिंग पॉइंट डिवीजन करने के लिए मजबूर करने के लिए प्रयास करें।

कुछ की तरह:

double days_in_year = 365; 
double answer = 364/days_in_year; 

, के रूप में अच्छी तरह से काम के बाद से ऑपरेंड में से एक एक पूर्णांक नहीं है।

+0

अरे धन्यवाद। यह वास्तव में सरल था, लेकिन अब मुझे पता है! – Jeff

+0

मदद करने के लिए खुश। :) – Sapph

2

आपको डबल डिवीजन करने की आवश्यकता है। अभी जावा इसे पूर्णांक विभाजन के रूप में व्याख्या कर रहा है और छिड़काव int लौटा रहा है।

क्या आप की जरूरत है:

double answer = 364/365.0; 

या

double answer = 364/(double) 365; 
5

आप किसी पूर्णांक प्रकार (364) ले जा रहे हैं और एक अन्य पूर्णांक प्रकार से विभाजित (365) - इस सवाल का जवाब होने जा रहा है एक int फिर इसे दोहरे प्रकार के उत्तर में संग्रहीत किया जाता है। तुम कर सकते हो निम्नलिखित:

double answer = 364d/365d; 

अधिक यहाँ जानकारी:

http://mindprod.com/jgloss/division.html

+3

+1 डी प्रत्यय का उपयोग करने के लिए +1, जो कि अंत में 0 को जोड़ने या स्पष्ट कलाकार का उपयोग करने से बहुत अच्छा है (IMHO), जैसा कि अन्य सभी उत्तरों सुझाव देते हैं। – Cowan

0

कारण यह है कि जावा में पूर्णांक शाब्दिक का वह डिफ़ॉल्ट प्रकार int और सभी int आधारित arithemetic के सभी परिणाम है है int पर वापस कास्ट करें। इसलिए यद्यपि आपका जवाब 0.997, जब इसे वापस typecasted है यह 0 हो जाता है:

(int)0.997 = 0 

तो तुम इस तरह कर सकते हैं:

364.0/365.0 

या

((float)364)/365