@Override public int getSignum() { return value.signum(); }
@Override public void setBigNumber( BigDecimal number ) { bool = number.signum() != 0; }
/** * Constructs a Decimal128 value representing the given BigDecimal. * * @param value the Decimal128 value represented as a BigDecimal * @throws NumberFormatException if the value is out of the Decimal128 range */ public Decimal128(final BigDecimal value) { this(value, value.signum() == -1); }
@Override public int getSignum() { return value.signum(); }
private static int getLength(BigDecimal v) { int signum = v.signum(); if (signum == 0) { // Special case for zero return 1; } return (signum < 0 ? 2 : 1) + (v.precision() + 1 + (v.scale() % 2 == 0 ? 0 : 1)) / 2; }
protected Boolean convertBigNumberToBoolean( BigDecimal number ) { if ( number == null ) { return null; } return Boolean.valueOf( number.signum() != 0 ); }
/** * Returns a {@code BigDecimal} whose value is the absolute value of * {@code this}. The scale of the result is the same as the scale of this. */ public BigDecimal abs() { return ((signum() < 0) ? negate() : this); }
public static BigDecimal round(BigDecimal value, BigDecimal increment, RoundingMode roundingMode) { if (increment.signum() == 0) { // 0 increment does not make much sense, but prevent division by 0 return value; } else { BigDecimal divided = value.divide(increment, 0, roundingMode); BigDecimal result = divided.multiply(increment); return result; } }
public static boolean isIntegerValue(BigDecimal value) { return value.signum() == 0 || value.scale() <= 0 || value.stripTrailingZeros().scale() <= 0; } }
private boolean isIntegerValue(BigDecimal bd) { return bd.signum() == 0 || bd.scale() <= 0 || bd.stripTrailingZeros().scale() <= 0; }
/** * Get the sign of the underlying decimal. * @return 0 if the decimal is equal to 0, -1 if less than zero, and 1 if greater than 0 */ @HiveDecimalVersionV1 public int signum() { return bd.signum(); }
public OrderType getType() { return getAmount().signum() == -1 ? OrderType.BID : OrderType.ASK; }
/** * Returns a {@code BigDecimal} whose value is the absolute value of * {@code this}. The result is rounded according to the passed context * {@code mc}. */ public BigDecimal abs(MathContext mc) { BigDecimal result = (signum() < 0) ? negate() : new BigDecimal(getUnscaledValue(), scale); result.inplaceRound(mc); return result; }
public BigDecimal randHiveBigDecimalInverse(Random r, BigDecimal bigDecimal) { if (bigDecimal.signum() == 0) { return bigDecimal; } return BigDecimal.ONE.divide(bigDecimal); }
@Override public Value divide(Value v) { ValueDecimal dec = (ValueDecimal) v; if (dec.value.signum() == 0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getSQL()); } BigDecimal bd = value.divide(dec.value, value.scale() + DIVIDE_SCALE_ADD, BigDecimal.ROUND_HALF_DOWN); if (bd.signum() == 0) { bd = BigDecimal.ZERO; } else if (bd.scale() > 0) { if (!bd.unscaledValue().testBit(0)) { bd = bd.stripTrailingZeros(); } } return ValueDecimal.get(bd); }
public OrderType getSide() { if (isTrade()) { switch (getAmount().signum()) { case 0: default: return null; // deposit or withdrawal case 1: return OrderType.BID; case -1: return OrderType.ASK; } } else { return null; } }
public static Decimal28SparseHolder getDecimal28Holder(DrillBuf buf, BigDecimal bigDecimal) { Decimal28SparseHolder dch = new Decimal28SparseHolder(); dch.scale = bigDecimal.scale(); dch.precision = bigDecimal.precision(); Decimal28SparseHolder.setSign(bigDecimal.signum() == -1, dch.start, dch.buffer); dch.start = 0; dch.buffer = buf.reallocIfNeeded(5 * DecimalUtility.INTEGER_SIZE); DecimalUtility .getSparseFromBigDecimal(bigDecimal, dch.buffer, dch.start, dch.scale, Decimal28SparseHolder.nDecimalDigits); return dch; }
public static Decimal38SparseHolder getDecimal38Holder(DrillBuf buf, BigDecimal bigDecimal) { Decimal38SparseHolder dch = new Decimal38SparseHolder(); dch.scale = bigDecimal.scale(); dch.precision = bigDecimal.precision(); Decimal38SparseHolder.setSign(bigDecimal.signum() == -1, dch.start, dch.buffer); dch.start = 0; dch.buffer = buf.reallocIfNeeded(Decimal38SparseHolder.maxPrecision * DecimalUtility.INTEGER_SIZE); DecimalUtility .getSparseFromBigDecimal(bigDecimal, dch.buffer, dch.start, dch.scale, Decimal38SparseHolder.nDecimalDigits); return dch; }
@Override public ValueDecimal modulus(Value v) { ValueDecimal dec = (ValueDecimal) v; if (dec.value.signum() == 0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getSQL()); } BigDecimal bd = value.remainder(dec.value); return ValueDecimal.get(bd); }
@Override public ValueDecimal modulus(Value v) { ValueDecimal dec = (ValueDecimal) v; if (dec.value.signum() == 0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getSQL()); } BigDecimal bd = value.remainder(dec.value); return ValueDecimal.get(bd); }