2013-09-30 2 views
11

में दो बार पूर्णांक को विभाजित करना मैं देख सकता हूं कि यह नए प्रोग्रामर के लिए एक आम समस्या है, हालांकि मैं अपने कोड के किसी भी समाधान को लागू करने में सफल नहीं हुआ। असल में मैं डब्ल्यू और वी को विभाजित करना चाहता हूं, जिसे डबल वैरिएबल में सहेजा जाना चाहिए। लेकिन यह यह ढीला परिशुद्धता और integer मूल्य के लिए trucated, बाद trucated integerdouble में बदल जाती है प्रिंट [0.0, 0.0, ..., 0.0]जावा

public static double density(int[] w, int[] v){ 
double d = 0; 
    for(L = 0; L < w.length; L++){ 
     d = w[L] /v[L]; 
    } 
    return d; 
} 
+2

Google: पूर्णांक विभाजन पर डबल करने के लिए डाला जाता है। यह आपको छंटनी के साथ एक पूर्णांक परिणाम देगा। डी = (डबल) डब्ल्यू [एल]/वी [एल] लिखें; – Bathsheba

+0

संभावित डुप्लिकेट [1/3 == 0 का परिणाम क्यों है?] (Http://stackoverflow.com/questions/4685450/why-is-the-result-of-1-3-0) – fabian

उत्तर

26

इस लाइन यहाँ d = w[L] /v[L]; निम्नलिखित की तरह उपयोग के लिए कई कदम

d = (int)w[L]/(int)v[L] 
d=(int)(w[L]/v[L])   //the integer result is calculated 
d=(double)(int)(w[L]/v[L]) //the integer result is cast to double 

दूसरे शब्दों में सटीक पहले से ही चला गया है इससे पहले कि आप दोगुना करने के लिए डाली से अधिक जगह लेता है, आप की जरूरत है पहले डबल करने के लिए डाला गया, इसलिए

d = ((double)w[L])/(int)v[L]; 

यह जावा को पूर्णांक गणित का उपयोग करने के बजाय पूरे तरीके से डबल गणित का उपयोग करने के लिए मजबूर करता है और फिर

+0

कोई आवश्यकता नहीं int करने के लिए, यह पहले से ही एक int है! –

+0

अच्छा स्पष्टीकरण! – ppeterka

+1

@ सिल्वीबुर्सेसा मैं यह प्रतिनिधित्व करने की अधिक कोशिश कर रहा हूं कि यह * एक int –

3

Actaully w[L]/v[L] यहाँ दोनों पूर्णांक हैं, विभाजन संचालन पर।

समाधान ऑपरेंड या विभाजक या दोनों को डबल में परिवर्तित किया जाएगा, विभाजन ऑपरेशन दशमलव मान का उत्पादन करेगा।

d = w[L]/(double)v[L];