本文整理了Java中java.math.BigDecimal.setScale()
方法的一些代码示例,展示了BigDecimal.setScale()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。BigDecimal.setScale()
方法的具体详情如下:
包路径:java.math.BigDecimal
类名称:BigDecimal
方法名:setScale
[英]Returns a new BigDecimal instance with the specified scale. If the new scale is greater than the old scale, then additional zeros are added to the unscaled value. If the new scale is smaller than the old scale, then trailing zeros are removed. If the trailing digits are not zeros then an ArithmeticException is thrown.
If no exception is thrown, then the following equation holds: x.setScale(s).compareTo(x) == 0.
[中]返回具有指定比例的新BigDecimal实例。如果新比例大于旧比例,则会向未缩放值添加额外的零。如果新比例小于旧比例,则删除尾随零。如果尾随数字不是零,则引发算术异常。
如果未引发异常,则以下等式成立:x.setScale(s)。比较(x)==0。
代码示例来源:origin: stackoverflow.com
new BigDecimal(value).setScale(places, RoundingMode.HALF_UP).doubleValue()
代码示例来源:origin: stackoverflow.com
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
代码示例来源:origin: apache/hbase
@Override
public BigDecimal multiply(BigDecimal bd1, BigDecimal bd2) {
return (bd1 == null || bd2 == null) ? null : bd1.multiply(bd2)
.setScale(2,RoundingMode.HALF_EVEN);
}
代码示例来源:origin: stackoverflow.com
public static void main(String[] args) {
String doubleVal = "1.745";
String doubleVal1 = "0.745";
BigDecimal bdTest = new BigDecimal( doubleVal);
BigDecimal bdTest1 = new BigDecimal( doubleVal1 );
bdTest = bdTest.setScale(2, BigDecimal.ROUND_HALF_UP);
bdTest1 = bdTest1.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("bdTest:"+bdTest); //1.75
System.out.println("bdTest1:"+bdTest1);//0.75, no problem
}
代码示例来源:origin: stackoverflow.com
double r = 5.1234;
System.out.println(r); // r is 5.1234
int decimalPlaces = 2;
BigDecimal bd = new BigDecimal(r);
// setScale is immutable
bd = bd.setScale(decimalPlaces, BigDecimal.ROUND_HALF_UP);
r = bd.doubleValue();
System.out.println(r); // r is 5.12
代码示例来源:origin: stackoverflow.com
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal result = d.subtract(d.setScale(0, RoundingMode.FLOOR)).movePointRight(d.scale());
System.out.println(result);
代码示例来源:origin: baomidou/mybatis-plus
Map<Long, BigDecimal> idPriceMap = new HashMap<>();
for (H2User u : userService.list(ew)) {
System.out.println(u.getName() + "," + u.getAge() + "," + u.getVersion());
idPriceMap.put(u.getTestId(), u.getPrice());
if (u.getVersion() != null && u.getVersion() == 99) {
System.out.println("============after update");
ew = new QueryWrapper<>();
ew.ge("age", AgeEnum.TWO.getValue());
for (H2User u : userService.list(ew)) {
System.out.println(u.getName() + "," + u.getAge() + "," + u.getVersion());
if (u.getTestId().equals(id99)) {
Assertions.assertEquals(100, u.getVersion().intValue(), "optLocker should update version+=1");
for (H2User u : userService.list(new QueryWrapper<>())) {
System.out.println(u.getName() + "," + u.getAge() + "," + u.getVersion());
Assertions.assertEquals(u.getPrice().setScale(2, RoundingMode.HALF_UP).intValue(), BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).intValue(), "all records should be updated");
代码示例来源:origin: kiegroup/optaplanner
public static long parseMicroCost(String costString) {
BigDecimal costBigDecimal = new BigDecimal(costString);
if (costBigDecimal.scale() > 11) {
throw new IllegalArgumentException("The costString (" + costString + ") has a scale ("
+ costBigDecimal.scale() + ") higher than 10.");
}
costBigDecimal = costBigDecimal.setScale(11);
return costBigDecimal.multiply(MICROS_PER_ONE_AS_BIG_DECIMAL).longValueExact();
}
代码示例来源:origin: stackoverflow.com
Double toBeTruncated = new Double("3.5789055");
Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
.setScale(3, RoundingMode.HALF_UP)
.doubleValue();
代码示例来源:origin: org.apache.hadoop/hadoop-common
/**
* Using BigDecimal so we can throw if we are overflowing the Long.Max.
*
* @param first - First Num.
* @param second - Second Num.
* @return Returns a double
*/
private static double multiply(double first, double second) {
BigDecimal firstVal = new BigDecimal(first);
BigDecimal secondVal = new BigDecimal(second);
return firstVal.multiply(secondVal)
.setScale(PRECISION, RoundingMode.HALF_UP).doubleValue();
}
代码示例来源:origin: prestodb/presto
/**
* @since 2.7.3
*/
public static BigDecimal toBigDecimal(long seconds, int nanoseconds)
{
if (nanoseconds == 0L) {
// 14-Mar-2015, tatu: Let's retain one zero to avoid interpretation
// as integral number
if (seconds == 0L) { // except for "0.0" where it can not be done without scientific notation
return BigDecimal.ZERO.setScale(1);
}
return BigDecimal.valueOf(seconds).setScale(9);
}
return new BigDecimal(toDecimal(seconds, nanoseconds));
}
代码示例来源:origin: kiegroup/optaplanner
@Override
public HardMediumSoftBigDecimalScore multiply(double multiplicand) {
// Intentionally not taken "new BigDecimal(multiplicand, MathContext.UNLIMITED)"
// because together with the floor rounding it gives unwanted behaviour
BigDecimal multiplicandBigDecimal = BigDecimal.valueOf(multiplicand);
// The (unspecified) scale/precision of the multiplicand should have no impact on the returned scale/precision
return new HardMediumSoftBigDecimalScore(
(int) Math.floor(initScore * multiplicand),
hardScore.multiply(multiplicandBigDecimal).setScale(hardScore.scale(), RoundingMode.FLOOR),
mediumScore.multiply(multiplicandBigDecimal).setScale(mediumScore.scale(), RoundingMode.FLOOR),
softScore.multiply(multiplicandBigDecimal).setScale(softScore.scale(), RoundingMode.FLOOR));
}
代码示例来源:origin: apache/hive
public static long bround(long input, int scale) {
return BigDecimal.valueOf(input).setScale(scale, RoundingMode.HALF_EVEN).longValue();
}
代码示例来源:origin: stackoverflow.com
BigDecimal a = new BigDecimal("123.13698");
BigDecimal roundOff = a.setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(roundOff);
代码示例来源:origin: stackoverflow.com
static Double round(Double d, int precise)
{
BigDecimal bigDecimal = new BigDecimal(d);
System.out.println("Before round: " + bigDecimal.toPlainString());
bigDecimal = bigDecimal.setScale(15, RoundingMode.HALF_UP);
System.out.println("Hack round: " + bigDecimal.toPlainString());
bigDecimal = bigDecimal.setScale(precise, RoundingMode.HALF_UP);
System.out.println("After round: " + bigDecimal.toPlainString());
return bigDecimal.doubleValue();
}
代码示例来源:origin: stackoverflow.com
public static double round(double unrounded, int precision, int roundingMode)
{
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, roundingMode);
return rounded.doubleValue();
}
代码示例来源:origin: stackoverflow.com
public static BigDecimal round(float d, int decimalPlace) {
BigDecimal bd = new BigDecimal(Float.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd;
}
代码示例来源:origin: apache/hive
@Override
public List<MutablePair<String, String>> getIntervals(String lowerBound, String upperBound, int numPartitions, TypeInfo
typeInfo) {
List<MutablePair<String, String>> intervals = new ArrayList<>();
DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo)typeInfo;
int scale = decimalTypeInfo.getScale();
BigDecimal decimalLower = new BigDecimal(lowerBound);
BigDecimal decimalUpper = new BigDecimal(upperBound);
BigDecimal decimalInterval = (decimalUpper.subtract(decimalLower)).divide(new BigDecimal(numPartitions),
MathContext.DECIMAL64);
BigDecimal splitDecimalLower, splitDecimalUpper;
for (int i=0;i<numPartitions;i++) {
splitDecimalLower = decimalLower.add(decimalInterval.multiply(new BigDecimal(i))).setScale(scale,
RoundingMode.HALF_EVEN);
splitDecimalUpper = decimalLower.add(decimalInterval.multiply(new BigDecimal(i+1))).setScale(scale,
RoundingMode.HALF_EVEN);
if (splitDecimalLower.compareTo(splitDecimalUpper) < 0) {
intervals.add(new MutablePair<String, String>(splitDecimalLower.toPlainString(), splitDecimalUpper.toPlainString()));
}
}
return intervals;
}
}
代码示例来源:origin: SonarSource/sonarqube
private static double scale(double value, int decimalScale) {
BigDecimal bd = BigDecimal.valueOf(value);
return bd.setScale(decimalScale, RoundingMode.HALF_UP).doubleValue();
}
}
代码示例来源:origin: kiegroup/optaplanner
@Override
public HardSoftBigDecimalScore multiply(double multiplicand) {
// Intentionally not taken "new BigDecimal(multiplicand, MathContext.UNLIMITED)"
// because together with the floor rounding it gives unwanted behaviour
BigDecimal multiplicandBigDecimal = BigDecimal.valueOf(multiplicand);
// The (unspecified) scale/precision of the multiplicand should have no impact on the returned scale/precision
return new HardSoftBigDecimalScore(
(int) Math.floor(initScore * multiplicand),
hardScore.multiply(multiplicandBigDecimal).setScale(hardScore.scale(), RoundingMode.FLOOR),
softScore.multiply(multiplicandBigDecimal).setScale(softScore.scale(), RoundingMode.FLOOR));
}
内容来源于网络,如有侵权,请联系作者删除!