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