Java, BigDecimal.除法问题
2022-09-03 13:00:19
我正在尝试计算百分比“因子”。也就是说,给定20%,将其转换为0.2(我的目的是稍后将值乘以该值并得到20%的值)。
无论如何,这个问题与这段代码有关:
public static void main(String[] args) {
int roundingMode = BigDecimal.ROUND_FLOOR;
BigDecimal hundred = new BigDecimal("100");
BigDecimal percentageFactor = null;
BigDecimal percentage = new BigDecimal("20");
BigDecimal value = new BigDecimal("500");
percentageFactor = percentage.divide(hundred, roundingMode);
float f = percentage.floatValue() / hundred.floatValue();
f = value.floatValue() * f;
BigDecimal aux = value.multiply(percentageFactor);
System.out.println("factor:"+percentageFactor.toString());
System.out.println("final falue:"+aux.toString());
System.out.println("Float Value:"+f);
}
我希望这样做的结果是这样的:
factor: 0.2
final value: 100
float value: 100
而是返回零,因此我得到:percentage.divide(hundred, roundingMode);
factor:0
final falue:0
Float Value:100.0
我做错了什么?如何正确划分两个大小数?
顺便说一句,我正在使用,因为我将计算货币百分比,所以我想要控制四舍五入。BigDecimal