2010-12-27 18 views
110

मुझे लगता है कि मैं एक साधारण प्रश्न के बारे में जो जवाब ढूंढ रहा हूं उसे नहीं ढूंढ सकता: मैं किसी भी संख्या को निकटतम int पर कैसे बढ़ा सकता हूं?जावा राउंड अप कोई भी संख्या

उदाहरण के लिए, जब भी संख्या 0.2 है, 0.7, 0.2222, 0.4324, ०.९९९९९ मैं परिणाम होने के लिए 1.

चाहेगा अब तक मैं

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

यह प्रतीत नहीं होता है हालांकि, काम कर रहे हैं।

+0

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

+12

मैं शर्त लगाता हूं कि आपके 'ए' में पूर्णांक प्रकार है। –

+0

हमें बताएं कि आपके इनपुट क्या हैं, और आपके अपेक्षित आउटपुट। –

उत्तर

216

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

+1

आह, स्पॉट पर ... धन्यवाद – Stevanicus

+1

यह केवल तभी होता है जब "ए" डबल –

+0

^^ "ए" को डबल या दो बार डालना चाहिए। इस उदाहरण में – Codeversed

12

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

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

या

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

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

1

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

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

Output : 
a:1 
+0

यह एक गलत जवाब है, क्योंकि इसे यूपी के दौर में देखने के लिए कहा जाता है यदि एक = 0.2 परिणाम 0 होगा – Mohamed23gharbi

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