[Débutant] NumberFormat qui arrondit bizarrement
Bonjour à tous,
Rien de mieux qu'un bout de code pour comprendre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| // NumberFormat
String nombre = "12.123455";
String nombre2 = "12.612325";
Integer minDecimal = new Integer("2");
Integer maxDecimal = new Integer("5");
NumberFormat nf = NumberFormat.getInstance();
double nombreFloat = new Double("0");
double nombreFloat2 = new Double("0");
try {
nombreFloat = (new Double(nombre)).doubleValue();
nombreFloat2 = (new Double(nombre2)).doubleValue();
} catch(NumberFormatException nfe){
nfe.printStackTrace();
}
if(minDecimal!=null){
nf.setMinimumFractionDigits(minDecimal.intValue());
}
if(maxDecimal!=null){
nf.setMaximumFractionDigits(maxDecimal.intValue());
}
System.out.println("\n\nNumberFormat : " + nf.format(nombreFloat));
System.out.println("NumberFormat : " + nf.format(nombreFloat2)); |
Et voici les résultats dont le deuxième qui me surprend quelque peu 8O :
Code:
1 2
| NumberFormat : 12,12346
NumberFormat : 12,61232 |
Quelqu'un sait-il pourquoi le deuxième résultat n'est pas "12.61233" ?
Pour info, vous pouvez aussi essayer avec "12.612315" avec il va bien vous donner "12.61232" !!!
En théorie, vu qu'il y a un 5 derrière il n'y a même pas à se poser la question. Ai-je louper un cours élémentaire de maths en ce qui concerne les arrondis :oops: ???
Merci d'avance