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: [email protected]
For additional commands, e-mail: [email protected]