Please see attached (revised) Test Proggy
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.Arrays;

public class SqlSheetBigDecimal {

        private static final String dots;
        /**/    static {

                final String pad   = "    ";
                final String dots4 = "....";
                final String dots9 = dots4 + '+' + dots4;
                /**/         dots  = dots9 + '1' + dots9 + '2' + dots9 + '3' + 
pad;
        }

        private static final MathContext CTX_NN_14_EVEN = new MathContext(14, 
RoundingMode.HALF_EVEN);
        private static final MathContext CTX_NN_15_EVEN = new MathContext(15, 
RoundingMode.HALF_EVEN);

        public static void printValue(final String value) {

                final BigDecimal big14 = new BigDecimal(value, CTX_NN_14_EVEN);
                final BigDecimal big15 = new BigDecimal(value, CTX_NN_15_EVEN);
                final BigDecimal big   = new BigDecimal(value);

                System.out.println("Dots.........: " +             dots         
  +      dots                             + dots);
                System.out.println("Precision 14.: " + rPad(value, 
dots.length()) + rPad(big14.toString(), dots.length()) + big14.doubleValue());
                System.out.println("Precision 15.: " + rPad(value, 
dots.length()) + rPad(big15.toString(), dots.length()) + big15.doubleValue());
                System.out.println("Raw Value....: " + rPad(value, 
dots.length()) + rPad(big  .toString(), dots.length()) + big  .doubleValue());
                System.out.println();
        }

        public static void main(final String[] args) {

                printValue("0.1066913");
                printValue("0.10669129999999999");
                printValue("0.086691299999999985");

                printValue(  "0.001234567890123456789");
                printValue( "0.0001234567890123456789");
                printValue("0.00001234567890123456789");

                printValue(  "123456789012345678900");
                printValue( "012345678901234567890");
                printValue("001234567890123456789");

                printValue("0.01234567890123456789");
                printValue("0.01234567890123456789e+9");
                printValue("0.01234567890123456789e+8");
                printValue("0.01234567890123456789e-2");
                printValue("0.01234567890123456789e-1");

                printValue(  "8.6691299999999985E-2");
                printValue(  "8.6691299999999985E-13");
                printValue(  "8.6691299999999985E+7");
                printValue(  "8.6691299999999985E+6");
                printValue(  "8.6691299999999985E-3");
                printValue(  "8.6691299999999985E-4");
        }

        public  static final String rPad(final CharSequence value, final int 
padLength) {

                final char[] padChars = new char[Math.max(0, padLength - 
value.length())];
                Arrays.fill (padChars, ' ');

                return value.toString().concat(String.valueOf(padChars));
        }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org

Reply via email to