J'ai besoin de formater un flotteur à "n" décimales.
essayait de BigDecimal, mais la valeur de retour n'est pas correcte ...
public static float Redondear(float pNumero, int pCantidadDecimales) {
// the function is call with the values Redondear(625.3f, 2)
BigDecimal value = new BigDecimal(pNumero);
value = value.setScale(pCantidadDecimales, RoundingMode.HALF_EVEN); // here the value is correct (625.30)
return value.floatValue(); // but here the values is 625.3
}
J'ai besoin de renvoyer une valeur flottante avec le nombre de décimales que je spécifie.
J'ai besoin d'un Float
retour de valeur nonDouble
.
String.format(java.util.Locale.US,"%.2f", floatValue);
Jetez un oeil à DecimalFormat . Vous pouvez facilement l'utiliser pour prendre un nombre et lui donner un nombre défini de décimales.
Modifier : Exemple
la source
DecimalFormat
constructeur est déconseillée, voir ma réponse pour une utilisation correcte deNumberFormat
.Essayez ceci, cela m'a beaucoup aidé
Le résultat sera ronde finalePrix -> 5652.26
la source
Il est à noter que l'utilisation du
DecimalFormat
constructeur est déconseillée. Le javadoc de cette classe indique:https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
Donc, ce que vous devez faire est (par exemple):
la source
Voici un exemple rapide utilisant la
DecimalFormat
classe mentionnée par Nick.La sortie de l'instruction print sera 12,35. Notez qu'il l'arrondira pour vous.
la source
DecimalFormat
constructeur est déconseillée, voir ma réponse pour une utilisation correcte deNumberFormat
.Un peu surpris que personne n'ait indiqué la manière directe de le faire, ce qui est assez facile.
Je suis sûr que cela ne permet pas d'arrondir à moitié même.
Pour ce que ça vaut, l'arrondi demi-pair va être chaotique et imprévisible à chaque fois que vous mélangez des valeurs à virgule flottante basées sur des binaires avec l'arithmétique de base 10. Je suis sûr que cela ne peut pas être fait. Le problème de base est qu'une valeur comme 1.105 ne peut pas être représentée exactement en virgule flottante. La valeur à virgule flottante sera quelque chose comme 1.105000000000001 ou 1.104999999999999. Ainsi, toute tentative d'effectuer un arrondi demi-pair entraîne des erreurs de codage de représentation.
Les implémentations en virgule flottante IEEE feront un demi-arrondi, mais elles feront un demi-arrondi binaire, pas un demi-arrondi décimal. Donc tu vas probablement bien
la source
pow
c'est une opération trop coûteuse à utiliser pour l'arrondi?la source
C'est un moyen beaucoup moins professionnel et beaucoup plus cher, mais il devrait être plus facile à comprendre et plus utile pour les débutants.
la source
Je pense que ce que tu veux
et utilisez la valeur de retour pour afficher.
renverra toujours 625,3 car il est principalement utilisé pour calculer quelque chose.
la source
Je cherchais une réponse à cette question et plus tard j'ai développé une méthode! :) Un avertissement juste, c'est arrondir la valeur.
la source