web-dev-qa-db-fra.com

Comment convertir de float en bigDecimal en Java?

Comment convertir de float en bigDecimal en Java?

36
akp
BigDecimal value = new BigDecimal(Float.toString(123.4f));

A partir de javadocs , le constructeur de chaîne est généralement le moyen préféré pour convertir un float en BigDecimal, car il ne souffre pas de l'imprévisibilité de la BigDecimal(double) constructeur.

Citation des documents:

Remarque: pour les valeurs autres float et double NaN et ± Infinity, ce constructeur est compatible avec les valeurs renvoyées par Float.toString (float) et Double.toString (double). C'est généralement le moyen préféré pour convertir un flottant ou un double en BigDecimal , car il ne souffre pas de l'imprévisibilité du constructeur BigDecimal (double) .

43
dogbane
float f = 45.6f;
BigDecimal bd = BigDecimal.valueOf(f);

Citation de documentations:

Remarque: Il s'agit généralement de la méthode préférée pour convertir un double (ou flottant) en BigDecimal, car la valeur renvoyée est égale à celle résultant de la construction d'un BigDecimal à partir du résultat de l'utilisation de Double.toString (double).

Référence: BigDecimal (Java Platform SE 6)

20
Spacemonkey

Pour une précision de 3 chiffres après la virgule décimale:

BigDecimal value = new BigDecimal(f,
        new MathContext(3, RoundingMode.HALF_EVEN));
8
Maurice Perry

C'est jusqu'à ma connaissance:

   public static BigDecimal floatToBigDecimal(Float a){


    if(a == null || a.isInfinite() || a.isNaN()){
        return BigDecimal.ZERO;
    }
    try{
        return BigDecimal.valueOf(a);

    }catch(Exception e){
        return BigDecimal.ZERO;
    }

}

* Remarque: Il s'agit généralement de la méthode préférée pour convertir un double (ou flottant) en BigDecimal, car la valeur renvoyée est égale à celle résultant de la construction d'un BigDecimal à partir du résultat de l'utilisation de Double.toString (double).

statique statique BigDecimal valueOf (double val)

Paramètres:
val - double pour convertir en BigDecimal.
Retours:
un BigDecimal dont la valeur est égale ou approximativement égale à la valeur de val.
Lance:
NumberFormatException - si val est infini ou NaN.
Depuis:
1,5

J'ai vérifié si Infinite ou Not a Number, afin qu'il y ait moins de chances de NumberFormatException

1
Johnny Blaze