Java, BigDecimal. Problèmes avec la division

Je suis en train de calculer un pourcentage de "facteur". C'est, à 20%, de le convertir en 0.2 (mon intention est pour plus tard, multiplier les valeurs par qui et récupérer les 20% des valeurs).

De toute façon, la question est en lien avec ce morceau de code:

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

Je m'attends à ce que le résultat de ce être quelque chose comme:

factor: 0.2
final value: 100
float value: 100

mais au lieu percentage.divide(hundred, roundingMode); est de retour à zéro, donc j'obtiens:

factor:0
final falue:0
Float Value:100.0

Ce que je fais mal? Comment puis-je diviser en deux grandes décimales correctement?

En passant, je suis en utilisant BigDecimal parce que je serai calcul des pourcentages, donc je veux de contrôle concernant l'arrondissement.

source d'informationauteur gonso