android - Strange error while doing a multiplication in java? -


  सार्वजनिक स्थैतिक int NUM_FRAMES = 8; सार्वजनिक स्थैतिक int FRAME_REPEAT_NO = 2; तीव्रता ऊंचाई = 24; //bitmap.getWidth () 168 है और bitmap.getHeight () 91 डबल w = bitmap.getWidth () है; W = w / NUM_FRAMES; W = w * FRAME_REPEAT_NO; W = w * ऊंचाई; W = w / bitmap.getHeight ();   

मैं ऐसा करता हूं और मुझे w का मान 11.07 जैसा मिलता है जो सही है।

लेकिन जब मैं यह करता हूं: <पूर्व> डबल w = FRAME_REPEAT_NO * (बिटमैप .getWidth () / NUM_FRAMES) * (ऊंचाई / बिटमैप.गेटहाइट ());

w का मान हमेशा 0 होता है;

क्या कोई मुझे बता सकता है कि यह क्यों हो रहा है?

पीएस मैं इसे एंड्रॉइड ऐप में कर रहा हूं ...

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

w = (डबल) (FRAME_REPEAT_NO * bitmap.getWithth) * ऊंचाई) / (डबल) (NUM_FRAMES * bitmap.getHeight ()) का उपयोग करके अपने परिणाम की गणना करने पर विचार करें

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

कोई बड़ा सौदा नहीं है, लेकिन सिर्फ सोचा कि मैं इसे वहां से निकाल दूंगा।

संपादित करें: मैंने आपकी टिप्पणी से एक अन्य पोस्ट पर देखा था, जिसे आप वास्तव में चाहते हैं 11. अच्छा तो बस युगल को पूरी तरह ड्रॉप करें:

w = (FRAME_REPEAT_NO * bitmap.getWidth () * ऊंचाई) / (NUM_FRAMES * बिटमैप.गेटहाइट ())

उत्तर ठीक 11 (पूर्णांक) है, जो 11.0 के फ़्लोटिंग बिंदु सन्निकटन से भिन्न है।

Comments