Je veux tronquer un float et une double valeur en Java.
Voici mes exigences: 1. si j'ai 12.49688f, il devrait être imprimé au format 12.49 sans arrondir 2. s'il correspond à 12.456 en double, il devrait être imprimé au format 12.45 sans arrondir 3. Dans tous les cas, si la valeur est égale à 12.0, elle doit être imprimée au format 12 uniquement.
la condition 3 doit toujours être prise en compte. Elle doit être concurrente de la logique de troncature.
essayez ceci
DecimalFormat df = new DecimalFormat("##.##");
df.setRoundingMode(RoundingMode.DOWN);
System.out.println(df.format(12.49688f));
System.out.println(df.format(12.456));
System.out.println(df.format(12.0));
Ici, nous utilisons un formateur décimal pour le formatage. Le mode arrondi est réglé sur DOWN afin qu'il ne soit pas automatiquement arrondi à la décimale.
Le résultat attendu est:
12.49
12.45
12
J'ai le même problème avec Android, vous pouvez utiliser à la place:
DecimalFormat df = new DecimalFormat("##.##");
df.setRoundingMode(RoundingMode.DOWN);
mais pour cette API, le niveau 9 est requis.
Une autre solution rapide est:
double number = 12.43543542;
int aux = (int)(number*100);//1243
double result = aux/100d;//12.43
double d = <some-value>;
System.out.println(String.format("%.2f", d - 0.005);
Vérifiez Java.math.BigDecimal.round(MathContext).
jetez un oeil avec DecimalFormat()
:
DecimalFormat df = new DecimalFormat("#.##");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(dfs);
Essayez d’utiliser DecimalFormat et réglez le paramètre RoundingMode pour qu’il corresponde à vos besoins.