Saturday, 15 February 2014

java - 1000 * 60 * 60 * 24 * 30 results in a negative number -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 जवाब

    मैं गणना करने का प्रयास कर रहा हूं मिलीसेकंडों को गुणा करके 30 दिन, लेकिन परिणाम लगातार दिन_30 के मान के लिए ऋणात्मक संख्या समाप्त होता है और मुझे यकीन नहीं है कि क्यों

    कोई सुझाव काफी सराहना कर रहे हैं!

    कोड SNIPPET: <पूर्व> // सही समय सुनिश्चित करने के लिए जांच करें SharedPreferences pref = getApplicationContext () .getSharedPreferences ("DataCountService", 0); लंबे दिन_30 = 1000 * 60 * 60 * 24 * 30; लंबे पुरानेटाइम = प्रीफ़.गेटलॉन्ग ("स्मस्टिमस्टैम्प", 0); लंबा नया टाइम = सिस्टम। समयटैम मिलिसे (); यदि (न्यूटाइम - पुराना समय & gt; = दिन_30) {

    दिन_30 में मान परिणाम: -1702967296

    पीएस

      दोहरा दिन_30 = 1000 * 60 * 60 * 24 * 30; डबल पुराना टाइम = pref.getLong ("smstimestamp", 0); डबल न्यूटाइम = System.currentTimeMillis (); यदि (न्यूटाइम - पुराना टाइम> gt; = दिन_30) {  

    एक छोटे से परिणाम - लेकिन फिर भी नकारात्मक संख्या -1.702967296 ई 9

    आप एक साथ ints गुणा कर रहे हैं, और अतिप्रवाह होता है क्योंकि गुणा करने के बाद ही इसे लंबे में परिवर्तित हो जाता है पहले कोड को लंबे के रूप में कास्ट करें।

      लंबी दिन_30 = (लंबी) 1000 * 60 * 60 * 24 * 30;   

    या लंबे का शाब्दिक उपयोग करें:

      लंबे दिन_30 = 1000L * 60 * 60 * 24 * 30;   

    यह शुरुआत से लंबे गणित के संचालन को बल देगा।

No comments:

Post a Comment