Я пытаюсь рассчитать процентный «фактор». То есть, учитывая 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
, потому что я буду рассчитывать денежные проценты, поэтому я хочу контролировать округление.