2015-09-29 10 views
5

के पहले गैर-शून्य अंकों को कैसे प्राप्त करें जावा में मुझे बिगडेसिमल का पहला गैर-शून्य अंक कैसे प्राप्त होता है?बिगडेसिमल

उदाहरण के लिए:

0.001 => 1 
0.02 => 2 
987.654 => 9 

0 और 1 के बीच संख्या के लिए यह काम करेगा:

bigDecimal.scaleByPowerOfTen(bigDecimal.precision()).setScale(0, RoundingMode.DOWN) 

1 से भी बड़ा संख्या के लिए यह काम करेगा:

bigDecimal.scaleByPowerOfTen(1-bigDecimal.precision()).setScale(0, RoundingMode.DOWN) 

लेकिन वहाँ है एक समाधान, जो किसी भी संख्या के लिए काम करता है?

+1

हो सकता है कि '()' ले bigDecimal.toPlainString और पहली बात यह है कि एक शून्य या बिंदु नहीं है पाते हैं। –

+0

इसे सभी स्ट्रिंग्स में बदलने के बारे में, एक स्ट्रिंग में डालने के बारे में कैसे करें। कुछ भी नहीं, और पहले चार बाहर डंपिंग? – ergonaut

+0

@ लुकासरोस मुझे भी "-" साइन का ख्याल रखना होगा। और स्ट्रिंग में कनवर्ट करना "समाधान" की तरह लगता है, "समाधान" की तरह नहीं ... – slartidan

उत्तर

4

यहाँ एक समाधान सिर्फ BigDecimal और int का उपयोग कर रहा है:

BigDecimal value = new BigDecimal(0.021); //input your value here 

int scale = value.scale(); 
int precision = value.precision(); 
int result = value.movePointLeft(precision-scale-1).abs().intValue(); //this will generate the result you need 
+2

अंत में बस एक Math.abs में फेंक दें। – laune

+0

@laune इसे इंगित करने के लिए धन्यवाद! BigDecimal में पहले से ही एक 'abs()' विधि है जिसे मैंने जोड़ा है। –

2

BigDecimal को char[] में परिवर्तित करना और लूप का उपयोग करके संख्याओं की जांच करना संभव है। निम्नलिखित उदाहरण देखें।

BigDecimal bigDecimal = new BigDecimal(5220.33); 

    char[] chars = String.valueOf(bigDecimal).toCharArray(); 
    for (char c : chars) { 
     if (Character.isDigit(c) ? Character.getNumericValue(c) != 0 : false) { 
      System.out.println("First number is : " + c); 
      return; 
     } 
    } 
संबंधित मुद्दे