Bonjour,
Je voudrais arrondir mes chiffres ainsi
Ce sont des float
Exemple : 0.9 donnera 1.0
263.45 donnera 263.5
22.37 donnera 22.4
Version imprimable
Bonjour,
Je voudrais arrondir mes chiffres ainsi
Ce sont des float
Exemple : 0.9 donnera 1.0
263.45 donnera 263.5
22.37 donnera 22.4
Math.round(10d*x)/10d;
Tester avec x = 0.9 j'ai toujours 0.9 en sortie :?
Bonjour,
C'est normal que 0.9 te donne 0.9 puisque tu est déjà à une décimale près.
Pour 263.45 tu voulais que ça donne 263.5 comme pour 22.37 qui donne 22.4 ou la tu arrondie à une décimale près et pour 0.9 tu veux arrondir à l'unité près.
c'est pas très clair, tu veux faire quoi, retirer systématiquement 1 décimale?
C'est pas évident car même si t'affiche 0.9, la float stock peut être 0.90000000001 ou 0.899999999999 et tu as déjà un arrondi à l'affichage....
Je viens de me rendre compte que mon exemple n’était pas bon je recommence
Par exemple:
- -0.95 -> -1.0
- 265.45 -> 265.5
- 12.24 -> 12.2
Ta demande n'est pas très claire en effet
Dans ton exemple tu veux arrondir a la 0 ème décimale (bon a l'unité quoi), puis la 1 ère puis la 1 ère (donc contradiction dans l'ennoncé ou volontée réelle?)
Manuellement ca donnerait :
Après si tu veux un système qui va choisir pour toi quel doit être la décimale, bonne chance ...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public static void main(String args[]) { System.err.println("** "+arrondir(-0.95, 0)); // Donc -1.0 System.err.println("** "+arrondir(265.45, 1)); // Donc 265.5 System.err.println("** "+arrondir(12.24, 1)); // Donc 12.2 } public static double arrondir(double in, int decimal) { double v = ((Math.round(in * (Math.pow(10, decimal)))) / (Math.pow(10, decimal))); return v; }
donc en gros tu veux un arrondi à une décimal où le 0.5 serait arrondi au supérieur pour els nombres positifs et arrondi à l'inférieur pour les nombre négatifs....
Ben faut y aller à la mano:
Code:
1
2
3
4 for (float x : new float[] {-0.95f, 265.45f, 12.24f}) { float arrondi = (float)Math.floor(10*x+(x<0.0?(-0.5):0.5))/10; System.out.println(arrondi); }
ok merci pour vos exemple de code mais voila ce que j'obtient
pourquoi pour -530.1 il m'arrondr à -530.2 si on aurait eu -530.15 j'aurais compris mais la on a -530.10 ..?Citation:
Valeur: 0.95 arrondi: 1.0
Valeur: -267.95 arrondi: -268.0
Valeur: -530.1 arrondi: -530.2
Valeur: -562.7 arrondi: -562.8
Valeur: -584.3 arrondi: -584.4
Valeur: -597.0 arrondi: -597.1
Valeur: -608.1 arrondi: -608.2
(j'utilsie le code de tchize_ )
parce que c'était de la bidouille codée vite fait.
Plus lent mais exact
Code:arrondi =Math.round(Math.abs(10*x))/10f*(x<0.0?-1.0f:1.0f);
Merci a tous et merci tchize_ :ccool: