2012-02-19 10 views
9

से अधिक है, अनिवार्य रूप से, यदि उत्पन्न संख्या 2.3 है तो अगर मैं घटता हूं .5 तो यह 1.8 होगा लेकिन राउंडिंग फ़ंक्शन इसे 2 बना देगा, जो मैं चाहता हूं या यदि उत्तर 2.99 999 है और मैं घटाता हूं .5, तो जवाब 2.4 99 99 है जो 2 से नीचे होना चाहिए जो मैं चाहता हूं। मेरा प्रश्न है, तो जवाब 2 भी है और मैं .5 घटाना जवाब अब 1.5 है,, तो यह अभी भी करने के लिए 2.निकटतम पूर्ण संख्या तक घूम रहा है .... क्या मैं धोखा दे रहा हूं या यह

temp1_1= Math.round(temp2_2/(360/temp_value)-.5); 

को ख़त्म कर इस इस के लिए कोड की मेरी लाइन है।

+0

जब आपने कोशिश की तो क्या हुआ? –

उत्तर

17

यहां तक ​​कि सरल और संभावित तेजी

double d = 2.99999999; 
long l = (long) d; // truncate to a whole number. 

यह होगा दौर 0. Math.floor() के प्रति नकारात्मक अनंत की ओर दौर। Math.round (x - 0.5) नकारात्मक अनंतता की ओर भी गोल करता है।

+9

मेरा मानना ​​है कि यह ऋणात्मक संख्या * ऊपर * के दौर में होगा। –

+0

जो मुझे पता है, मुझे नहीं लगता कि मुझे कभी नकारात्मक मूल्य होगा। जिस तरह से मैं अब तक काम कर रहा हूँ। मुझे एक त्वरित फिक्स की आवश्यकता थी। यदि भविष्य में कोई समस्या उत्पन्न होती है तो मैं एक बदलाव करूंगा। जानकारी के लिए सभी thanx –

33

ऐसा करने के लिए पहले से ही एक कार्य है। यह floor कहा जाता है:

double d = Math.floor(2.9999) //result: 2.0 
3

हर कोई हमेशा फैंसी कार्यों का उपयोग करना चाहता है, लेकिन विनम्र मॉड्यूलस के बारे में भूल जाता है। मेरे समाधान:

number = x-(x%1); 

एक के बाद विभाजन के शेष घटा देती है, तो एक्स = 2.999 होगा = 2, 3.111 होगा = 3 और इतने पर। इसके बारे में अच्छी बात यह है कि आप जो भी चाहें उसमें 1 को बदलकर आप किसी भी चीज को गोल कर सकते हैं।

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