जावा किसी भी संख्या में गोल


146

मुझे लगता है कि मैं एक साधारण सवाल के बारे में खोज रहा हूं, जो जवाब नहीं मिल रहा है: मैं किसी भी संख्या को निकटतम कैसे कर सकता हूं int?

उदाहरण के लिए, जब भी संख्या 0.2, 0.7, 0.2222, 0.4324, 0.99999 होती है, तो मैं चाहता हूं कि परिणाम 1 होगा।

अब तक मेरे पास है

int b = (int) Math.ceil(a / 100);

ऐसा लगता है कि यह काम नहीं कर रहा है।


आप अपने नमूना कोड में 100 से क्यों विभाजित कर रहे हैं?
जॉन स्कीट

14
मुझे यकीन है कि आपके aपास पूर्णांक प्रकार है।
निकिता रियाब 18

1
हाँ उर दाईं ओर एक इंट है ... जो इंगित करने के लिए धन्यवाद। 100.0 ने इसे मेरे लिए सॉर्ट किया।
स्टीवनिकस

1
मैं अनुमान लगा रहा हूँ कि वह क्या चाहता है / 100 गोल है, लेकिन हाँ, सवाल कुछ स्पष्टीकरण का उपयोग कर सकता है।
Jay

1
नोट: इस प्रश्न पर बेहतर उत्तर दिए गए हैं।
martijnn2008

जवाबों:


289

Math.ceil()कॉल करने के लिए सही कार्य है। मुझे लगता है aकि एक है int, जो a / 100पूर्णांक अंकगणितीय प्रदर्शन करेगा । Math.ceil(a / 100.0)इसके बजाय कोशिश करें ।

int a = 142;
System.out.println(a / 100);
System.out.println(Math.ceil(a / 100));
System.out.println(a / 100.0);
System.out.println(Math.ceil(a / 100.0));
System.out.println((int) Math.ceil(a / 100.0));

आउटपुट:

1
1.0
1.42
2.0
2

देखें http://ideone.com/yhT0l


3
यह केवल अगर "a" डबल है
L.Grillo

^ ^ "ए" को एक डबल होने या एक डबल कास्ट करने की आवश्यकता है।
कोड

1
aएक है intइस उदाहरण में, और यह के रूप में सुझाव काम करता है। जब int / floatपरिणाम होता है float, तो आउटपुट में प्रदर्शित किया जाता है। लिंक को आज़माएं।
डेंटिस्टन

16

मुझे नहीं पता कि आप 100 से क्यों विभाजित हो रहे हैं लेकिन यहां मेरी धारणा है int a;

int b = (int) Math.ceil( ((double)a) / 100);

या

int b = (int) Math.ceil( a / 100.0);

11
int RoundedUp = (int) Math.ceil(RandomReal);

यह सही काम करने के लिए लग रहा था। हर काम किया।


2

10 साल बाद लेकिन फिर भी उस समस्या ने मुझे पकड़ लिया।

तो यह उन लोगों के लिए जवाब है जो मुझे बहुत देर हो चुकी हैं।

यह काम नहीं करता

int b = (int) Math.ceil(a / 100);

क्योंकि परिणाम a / 100पूर्णांक के रूप में निकलता है और यह गोल है इसलिए Math.ceil इसके बारे में कुछ नहीं कर सकता है।

आपको इसके साथ गोल ऑपरेशन से बचना होगा

int b = (int) Math.ceil((float) a / 100);

अब यह काम कर रहा है।


0

ऐसा करने का सबसे आसान तरीका सिर्फ यह है: आप एक फ्लोट या डबल प्राप्त करेंगे और चाहते हैं कि इसे निकटतम राउंड अप में परिवर्तित कर दिया जाए, बस System.out.println((int)Math.ceil(yourfloat)); यह पूरी तरह से काम करेगा


-3

एक डबल मान लेते हैं और हमें कोई दशमलव स्थान के साथ एक गोल संख्या की आवश्यकता होती है। Math.round () फ़ंक्शन का उपयोग करें।
यह मेरे समाधान के रूप में चला जाता है।

double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );

Output : 
a:1

1
यह एक गलत उत्तर है, क्योंकि यहां यूपी को गोल करने के लिए कहा जाता है अगर = 0.2 का परिणाम 0 होगा
मोहम्मद 23gharbi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.