public DrillBinaryToDecimal38Converter(
     Decimal38SparseWriter writer, int precision, int scale, DrillBuf buf) {
   this.writer = writer;
   this.buf = buf.reallocIfNeeded(38);
   holder.precision = precision;
   holder.scale = scale;
 }
예제 #2
0
  public static Decimal38SparseHolder getDecimal38Holder(DrillBuf buf, String decimal) {

    Decimal38SparseHolder dch = new Decimal38SparseHolder();

    BigDecimal bigDecimal = new BigDecimal(decimal);

    dch.scale = bigDecimal.scale();
    dch.precision = bigDecimal.precision();
    Decimal38SparseHolder.setSign(bigDecimal.signum() == -1, dch.start, dch.buffer);
    dch.start = 0;
    dch.buffer = buf.reallocIfNeeded(dch.maxPrecision * DecimalUtility.INTEGER_SIZE);
    DecimalUtility.getSparseFromBigDecimal(
        bigDecimal, dch.buffer, dch.start, dch.scale, dch.precision, dch.nDecimalDigits);

    return dch;
  }