Java 使用 bigdecimal 计算除以 3 到百
Java calculation divisible by 3 to hundred using bigdecimal
这是我计算金额百分比的示例代码,在给定的示例中,我希望 return 为 10,但它给了我 9.9。我如何四舍五入到 10?
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class Test {
public static final int AMOUNT_SCALE = 2;
public static final int PRECISION_SIX = 6;
private static BigDecimal tmp = new BigDecimal("100");
public static final BigDecimal ONE_HUNDRED = tmp.setScale(0, RoundingMode.DOWN);
public static final MathContext MATH_CONTEXT = new MathContext(PRECISION_SIX, RoundingMode.HALF_UP);
public static void main(String [] args){
System.out.println(multiplyTwoNumbersAndDivideByOneHundredAmount(new BigDecimal(30), new BigDecimal(33.33))); ;
}
public static BigDecimal multiplyTwoNumbersAndDivideByOneHundredAmount(BigDecimal firstNumber, BigDecimal secondNumber) {
return (firstNumber.multiply(secondNumber)).divide(ONE_HUNDRED,MATH_CONTEXT).setScale(AMOUNT_SCALE,RoundingMode.DOWN);
}
}
.setScale(0, RoundingMode.HALF_UP);
是您要找的。
通过 BigInteger 对象传递结果:
BigInteger bi = new BigInteger(tmp);
这是我计算金额百分比的示例代码,在给定的示例中,我希望 return 为 10,但它给了我 9.9。我如何四舍五入到 10?
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class Test {
public static final int AMOUNT_SCALE = 2;
public static final int PRECISION_SIX = 6;
private static BigDecimal tmp = new BigDecimal("100");
public static final BigDecimal ONE_HUNDRED = tmp.setScale(0, RoundingMode.DOWN);
public static final MathContext MATH_CONTEXT = new MathContext(PRECISION_SIX, RoundingMode.HALF_UP);
public static void main(String [] args){
System.out.println(multiplyTwoNumbersAndDivideByOneHundredAmount(new BigDecimal(30), new BigDecimal(33.33))); ;
}
public static BigDecimal multiplyTwoNumbersAndDivideByOneHundredAmount(BigDecimal firstNumber, BigDecimal secondNumber) {
return (firstNumber.multiply(secondNumber)).divide(ONE_HUNDRED,MATH_CONTEXT).setScale(AMOUNT_SCALE,RoundingMode.DOWN);
}
}
.setScale(0, RoundingMode.HALF_UP);
是您要找的。
通过 BigInteger 对象传递结果:
BigInteger bi = new BigInteger(tmp);