Comment convertir de float en bigDecimal en Java?
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) .
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)
Pour une précision de 3 chiffres après la virgule décimale:
BigDecimal value = new BigDecimal(f,
new MathContext(3, RoundingMode.HALF_EVEN));
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