question: private static int applyPrecision ( int decExp , char [ ] digits , int nDigits , int prec ) { if ( prec >= nDigits || prec < 0 ) { return decExp ; } if ( prec == 0 ) { if ( digits [ 0 ] >= '5' ) { digits [ 0 ] = '1' ; Arrays . fill ( digits , 1 , nDigits , '0' ) ; return decExp + 1 ; } else { Arrays . fill ( digits , 0 , nDigits , '0' ) ; return decExp ; } } int q = digits [ prec ] ; if ( q >= '5' ) { int i = prec ; q = digits [ -- i ] ; if ( q == '9' ) { while ( q == '9' && i > 0 ) { q = digits [ -- i ] ; } if ( q == '9' ) { digits [ 0 ] = '1' ; Arrays . fill ( digits , 1 , nDigits , '0' ) ; return decExp + 1 ; } } digits [ i ] = ( char ) ( q + 1 ) ; Arrays . fill ( digits , i + 1 , nDigits , '0' ) ; } else { Arrays . fill ( digits , prec , nDigits , '0' ) ; } return decExp ; }
target:  Returns new decExp in case of overflow.