2011-10-21 9 views
5

मैं इस तरह एक मूल्य है:एक निश्चित सीमा के भीतर किसी संख्या को कैसे गोल करें?

421.18834 

और मैं एक मुखौटा है जो इस तरह दिख सकता साथ सही ढंग से यह गणितीय दौर के लिए है:

0.05 
0.04 
0.1 

उदाहरण के लिए, यदि मुखौटा 0.04 है, मैं 421.20 मान प्राप्त करना है, क्योंकि .18 .16 से 20 के करीब है।

Google द्वारा उपयोग किए जाने वाले सभी कार्यों ने काम नहीं किया।

क्या आप कृपया मेरी मदद कर सकते हैं?

उत्तर

9
double initial = 421.18834; 
double range = 0.04; 

int factor = Math.round(initial/range); // 10530 - will round to correct value 

double result = factor * range; // 421.20 
+1

यह '(int) (प्रारंभिक/श्रेणी)' राउंड सही ढंग से होना चाहिए? जैसा कि मैंने कुछ महीने पहले देखा था, यह सिर्फ गोलाकारों के बजाय दशमलव को हटा देता है (PHP में, मुझे लगता है)। अगर मैं Math.round का उपयोग करता हूं, तो यह काम करता है। –

+0

अच्छी तरह से देखा गया, मेरी जावा थोड़ी जंगली है :-) लेकिन 'Math.round() '* * सही ढंग से करेगी! – fredley

3

आपको एक विशेष कार्य की आवश्यकता नहीं है। आप अपना मूल नंबर (1/मुखौटा) से गुणा करते हैं, आप इसे दशमलव पर ले जाते हैं और आप उसी कारक से फिर से विभाजित होते हैं।

  • उदाहरण के साथ 0,05

    factor = 1/0.05 = 20 
    421.18834 * 20 = 8423.7668 
    int( 8423.7668) = 8424 
    8424.0/20.0 = 421.20 
    
  • उदाहरण 0.01 के साथ

    factor = 1/0.1 = 10 
    421.18834 * 10 = 4211.8834 
    int(4211.8834) = 4212 
    4212.0/10.0 = 421.20 
    
+2

सावधानी: जावा में, '4212/10'' 421.20' का उत्पादन नहीं करता है! – fredley

2

दोनों fredley और Matteo धारणा है कि गोलाई कारक ही 100 का एक कारक है के लिए कर 0.06 या 0.07 जैसे कारक, यह एक गलत धारणा है।

यहाँ मेरी जावा दिनचर्या है: सभी प्रश्नों के उत्तर आप शायद गुणा और विभाजन के बारे में यहाँ मिल जाएगा करने के लिए

public double rounded(double number, double factor) { 
    long integer = (long) number; 
    double fraction = number - integer; 
    double multiple = (fraction/factor); 
    multiple = Math.round(multiple); 
    return factor * multiple + integer; 
} 
1

विपरीत, आप इस सही रूप क्योंकि चल बिन्दु दशमलव स्थानों के पास नहीं है नहीं कर सकते। एक दशमलव रेडिक्स और फिर दौर में कनवर्ट करने की आवश्यकता है। BigDecimal वह करता है।

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