java.math.BigDecimal.remainder()方法的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(9.7k)|赞(0)|评价(0)|浏览(353)

本文整理了Java中java.math.BigDecimal.remainder()方法的一些代码示例,展示了BigDecimal.remainder()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。BigDecimal.remainder()方法的具体详情如下:
包路径:java.math.BigDecimal
类名称:BigDecimal
方法名:remainder

BigDecimal.remainder介绍

[英]Returns a new BigDecimal whose value is this % divisor.

The remainder is defined as this -.
[中]返回一个新的BigDecimal,其值为该%除数。
余数定义为-。

代码示例

代码示例来源:origin: plantuml/plantuml

public BigDecimal eval(Number v1, Number v2) {
    assertNotNull(v1, v2);
    return ((BigDecimal) v1).remainder((BigDecimal) v2, mc);
  }
});

代码示例来源:origin: stackoverflow.com

BigDecimal bd = new BigDecimal( "23452.4523434" );
BigDecimal fractionalPart = bd.remainder( BigDecimal.ONE ); // Result:  0.4523434

代码示例来源:origin: pentaho/pentaho-kettle

private static BigDecimal removeTrailingZeroFractionOrScale( BigDecimal a, int maxScale ) {
 if ( a.remainder( BigDecimal.ONE ).compareTo( BigDecimal.ZERO ) == 0 ) {
  return a.setScale( 0 );
 }
 return a.setScale( maxScale, RoundingMode.HALF_EVEN );
}

代码示例来源:origin: kiegroup/optaplanner

@Override
public boolean contains(BigDecimal value) {
  if (value == null || value.compareTo(from) < 0 || value.compareTo(to) >= 0) {
    return false;
  }
  return value.subtract(from).remainder(incrementUnit).compareTo(BigDecimal.ZERO) == 0;
}

代码示例来源:origin: apache/hive

public void set(BigDecimal totalSecondsBd) {
 long totalSeconds = totalSecondsBd.longValue();
 BigDecimal fractionalSecs = totalSecondsBd.remainder(BigDecimal.ONE);
 int nanos = fractionalSecs.multiply(IntervalDayTimeUtils.NANOS_PER_SEC_BD).intValue();
 set(totalSeconds, nanos);
}

代码示例来源:origin: apache/hive

public static Timestamp decimalToTimestamp(HiveDecimalV1 dec) {
 try {
  BigDecimal nanoInstant = dec.bigDecimalValue().multiply(BILLION_BIG_DECIMAL);
  int nanos = nanoInstant.remainder(BILLION_BIG_DECIMAL).intValue();
  if (nanos < 0) {
   nanos += 1000000000;
  }
  long seconds =
    nanoInstant.subtract(new BigDecimal(nanos)).divide(BILLION_BIG_DECIMAL).longValue();
  Timestamp t = new Timestamp(seconds * 1000);
  t.setNanos(nanos);
  return t;
 } catch (NumberFormatException nfe) {
  return null;
 } catch (IllegalArgumentException iae) {
  return null;
 }
}

代码示例来源:origin: apache/hive

public static Timestamp decimalToTimestamp(HiveDecimalV1 dec) {
 try {
  BigDecimal nanoInstant = dec.bigDecimalValue().multiply(BILLION_BIG_DECIMAL);
  int nanos = nanoInstant.remainder(BILLION_BIG_DECIMAL).intValue();
  if (nanos < 0) {
   nanos += 1000000000;
  }
  long seconds =
    nanoInstant.subtract(new BigDecimal(nanos)).divide(BILLION_BIG_DECIMAL).longValue();
  return Timestamp.ofEpochSecond(seconds, nanos);
 } catch (IllegalArgumentException | DateTimeException nfe) {
  return null;
 }
}

代码示例来源:origin: openhab/openhab1-addons

/**
 * Canonicalize the current latitude and longitude values such that:
 *
 * <pre>
 * -90 &lt;= latitude &lt;= +90 - 180 &lt; longitude &lt;= +180
 * </pre>
 */
private void canonicalize(DecimalType aLat, DecimalType aLon) {
  latitude = flat.add(aLat.toBigDecimal()).remainder(circle);
  longitude = aLon.toBigDecimal();
  if (latitude.compareTo(BigDecimal.ZERO) == -1) {
    latitude.add(circle);
  }
  latitude = latitude.subtract(flat);
  if (latitude.compareTo(right) == 1) {
    latitude = flat.subtract(latitude);
    longitude = longitude.add(flat);
  } else if (latitude.compareTo(right.negate()) == -1) {
    latitude = flat.negate().subtract(latitude);
    longitude = longitude.add(flat);
  }
  longitude = flat.add(longitude).remainder(circle);
  if (longitude.compareTo(BigDecimal.ZERO) <= 0) {
    longitude = longitude.add(circle);
  }
  longitude = longitude.subtract(flat);
}

代码示例来源:origin: jphp-group/jphp

public static Memory bcmod(Memory left, Memory modus){
  BigDecimal base = toBigDecimal(left).setScale(0, RoundingMode.DOWN);
  BigDecimal mod = toBigDecimal(modus).setScale(0, RoundingMode.DOWN);
  if (mod.compareTo(BigDecimal.ZERO) == 0) {
    return Memory.NULL;
  }
  return new StringMemory(base.remainder(mod, MathContext.UNLIMITED).toString());
}

代码示例来源:origin: com.h2database/h2

@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);
}

代码示例来源:origin: apache/hive

@HiveDecimalVersionV1
public HiveDecimalV1 remainder(HiveDecimalV1 dec) {
 return create(bd.remainder(dec.bd));
}

代码示例来源:origin: plantuml/plantuml

public BigDecimal eval(Number vv1, Number vv2) {
    BigDecimal v1 = (BigDecimal) vv1;
    BigDecimal v2 = (BigDecimal) vv2;
    assertNotNull(v1, v2);
    /*- 
     * Thanks to Gene Marin:
     * http://stackoverflow.com/questions/3579779/how-to-do-a-fractional-power-on-bigdecimal-in-java
     */
    int signOf2 = ((BigDecimal) v2).signum();
    double dn1 = v1.doubleValue();
    v2 = v2.multiply(new BigDecimal(signOf2)); // n2 is now positive
    BigDecimal remainderOf2 = v2.remainder(BigDecimal.ONE);
    BigDecimal n2IntPart = v2.subtract(remainderOf2);
    BigDecimal intPow = v1.pow(n2IntPart.intValueExact(), mc);
    BigDecimal doublePow = new BigDecimal(Math.pow(dn1, remainderOf2.doubleValue()));
    BigDecimal result = intPow.multiply(doublePow, mc);
    if (signOf2 == -1) {
      result = BigDecimal.ONE.divide(result, mc.getPrecision(), RoundingMode.HALF_UP);
    }
    return result;
  }
});

代码示例来源:origin: jphp-group/jphp

public static String bcpowmod(Environment env, Memory _base, Memory _exp, Memory _modulus, int scale) {
  BigDecimal base = toBigDecimal(_base);
  BigDecimal exp = toBigDecimal(_exp);
  BigDecimal modulus = toBigDecimal(_modulus);
  if (base.scale() != 0) {
    BigInteger expI = exp.toBigInteger();
    BigDecimal pow = bcpowImpl(base, expI, scale);
    return pow.remainder(modulus, MathContext.UNLIMITED).toString();
  } else {
    BigInteger baseI = base.toBigInteger();
    BigInteger expI = exp.toBigInteger();
    BigInteger modulusI = modulus.toBigInteger();
    BigInteger result = baseI.modPow(expI, modulusI);
    return result.toString();
  }
}

代码示例来源:origin: BroadleafCommerce/BroadleafCommerce

/**
 * Returns the remainder amount if the passed in totalAmount was divided by the
 * quantity taking into account the normal unit of the currency (e.g. .01 for US).
 *
 * @param totalAmount
 * @param quantity
 * @return
 */
public static int calculateRemainder(Money totalAmount, int quantity) {
  if (totalAmount == null || totalAmount.isZero() || quantity == 0) {
    return 0;
  }
  // Use this to convert to a whole number (e.g. 1.05 becomes 105 in US currency).
  BigDecimal multiplier = new BigDecimal(10).pow(totalAmount.getAmount().scale());
  BigDecimal amount = totalAmount.getAmount().multiply(multiplier);
  BigDecimal remainder = amount.remainder(new BigDecimal(quantity), ROUND_FLOOR_MATH_CONTEXT);
  return remainder.toBigInteger().intValue();
}

代码示例来源:origin: lealone/Lealone

@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);
}

代码示例来源:origin: java-json-tools/json-schema-validator

private static boolean valueIsLong(final JsonNode node)
{
  if (!node.canConvertToLong())
    return false;
  if (NodeType.getNodeType(node) == NodeType.INTEGER)
    return true;
  return node.decimalValue().remainder(BigDecimal.ONE)
    .compareTo(BigDecimal.ZERO) == 0;
}

代码示例来源:origin: spring-projects/spring-framework

BigDecimal leftBigDecimal = NumberUtils.convertNumberToTargetClass(leftNumber, BigDecimal.class);
BigDecimal rightBigDecimal = NumberUtils.convertNumberToTargetClass(rightNumber, BigDecimal.class);
return new TypedValue(leftBigDecimal.remainder(rightBigDecimal));

代码示例来源:origin: pentaho/pentaho-kettle

/**
 * Returns the remainder (modulus) of A / B.
 *
 * @param metaA
 * @param dataA
 *          The dividend
 * @param metaB
 * @param dataB
 *          The divisor
 * @return The remainder
 * @throws KettleValueException
 */
public static Object remainder( ValueMetaInterface metaA, Object dataA, ValueMetaInterface metaB, Object dataB ) throws KettleValueException {
 if ( dataA == null || dataB == null ) {
  return null;
 }
 switch ( metaA.getType() ) {
  case ValueMetaInterface.TYPE_NUMBER:
   return new Double( metaA.getNumber( dataA ).doubleValue() % metaB.getNumber( dataB ).doubleValue() );
  case ValueMetaInterface.TYPE_INTEGER:
   return new Long( metaA.getInteger( dataA ) % metaB.getInteger( dataB ) );
  case ValueMetaInterface.TYPE_BIGNUMBER:
   BigDecimal aValue = metaA.getBigNumber( dataA );
   BigDecimal bValue = metaA.getBigNumber( dataB );
   BigDecimal result = aValue.remainder( bValue, new MathContext( getMaxPrecision( aValue, bValue ),  RoundingMode.HALF_EVEN ) );
   return removeTrailingZeroFractionOrScale( result, result.scale() );
  default:
   throw new KettleValueException( "The 'remainder' function only works on numeric data" );
 }
}

代码示例来源:origin: java-json-tools/json-schema-validator

@Override
  protected final void validateDecimal(final ProcessingReport report,
    final MessageBundle bundle, final FullData data)
    throws ProcessingException
  {
    final JsonNode node = data.getInstance().getNode();
    final BigDecimal instanceValue = node.decimalValue();
    final BigDecimal decimalValue = number.decimalValue();

    final BigDecimal remainder = instanceValue.remainder(decimalValue);

    /*
     * We cannot use equality! As far as BigDecimal goes,
     * "0" and "0.0" are NOT equal. But .compareTo() returns the correct
     * result.
     */
    if (remainder.compareTo(BigDecimal.ZERO) == 0)
      return;

    report.error(newMsg(data, bundle, "err.common.divisor.nonZeroRemainder")
      .putArgument("value", node).putArgument("divisor", number));
  }
}

代码示例来源:origin: thymeleaf/thymeleaf

static Object executeRemainder(
    final IExpressionContext context,
    final RemainderExpression expression, final StandardExpressionExecutionContext expContext) {
  if (logger.isTraceEnabled()) {
    logger.trace("[THYMELEAF][{}] Evaluating remainder expression: \"{}\"", TemplateEngine.threadIndex(), expression.getStringRepresentation());
  }
  
  Object leftValue = expression.getLeft().execute(context, expContext);
  Object rightValue = expression.getRight().execute(context, expContext);
  if (leftValue == null) {
    leftValue = "null";
  }
  if (rightValue == null) {
    rightValue = "null";
  }
  final BigDecimal leftNumberValue = EvaluationUtils.evaluateAsNumber(leftValue);
  final BigDecimal rightNumberValue = EvaluationUtils.evaluateAsNumber(rightValue);
  if (leftNumberValue != null && rightNumberValue != null) {
    // Addition will act as a mathematical 'plus'
    return leftNumberValue.remainder(rightNumberValue);
  }
  
  throw new TemplateProcessingException(
    "Cannot execute division: operands are \"" + LiteralValue.unwrap(leftValue) + "\" and \"" + LiteralValue.unwrap(rightValue) + "\"");
  
}

相关文章

微信公众号

最新文章

更多