Bonjour,
Je veux supprimer plusieurs chiffres après la virgule sans arrondir ou changer les chiffres restants.
Par exemple : 22,1213195687 deviendra 22,12131 et merci d’avance.
Bonjour,
Je veux supprimer plusieurs chiffres après la virgule sans arrondir ou changer les chiffres restants.
Par exemple : 22,1213195687 deviendra 22,12131 et merci d’avance.
Hello,
cela dépend du typage que tu utilises pour tes nombres.
Les possibilités ne sont pas les mêmes si tu utilises
- BigDecimal : auquel cas tu peux effectivement mettre une limite au nombre de chiffres après la virgule :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BigDecimal n = new BigDecimal("22.1213195687"); System.out.println(n); n = n.setScale(5, RoundingMode.FLOOR); System.out.println(n);- float ou double : auquel cas si on veut contrôler le nombre de chiffres après la virgule, ça ne peut se faire que quand on les convertit en String dans le but des les afficher. En effet un float ou un double est une valeur approchée. Donc quoi qu'on y fasse, elle aura toujours des chifffres loin après la virgule. Il n'y a qu'en convertissant vers autre chose qu'on peut s'en débarrasser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DecimalFormat format = new DecimalFormat("0.0"); format.setMaximumFractionDigits(5); format.setRoundingMode(RoundingMode.FLOOR); double d = 22.1213195687; System.out.println(d); String s = format.format(d); System.out.println(s);
Merci thelvin pour votre aide. Effectivement, j’ai appliqué votre deuxième méthode. Les chiffres disparaissent mais, malheureusement, ils sont remplacés par des zéros.
Étranges symptômes. Tu peux nous montrer ton code ?
Salut thelvin,
Voici le code mais je n'arrive pas à le faire compiler .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import java.util.Scanner; import java.math.RoundingMode; import static java.lang.Math.*; import java.text.DecimalFormat; class Euclide { static Scanner entrée = new Scanner(System.in); static double distanceEuclidienne(double x1, double y1, double x2 , double y2) { double val=Math.sqrt(Math.pow(x2-x1,2)+ Math.pow(y2-y1,2)); return val; } public static void main(String[] args) { double x1 = entrée.nextDouble(); double y1 = entrée.nextDouble(); double x2 = entrée.nextDouble(); double y2 = entrée.nextDouble(); double val=0.0; val = distanceEuclidienne(x1, y1, x2 , y2); String s = format.format(val); Double f1 = Double.parseDouble(s); DecimalFormat df = new DecimalFormat(".000000"); df.setRoundingMode(RoundingMode.DOWN); System.out.println(df.format(f1)); } }
Hum. Pourtant en t'inspirant de mon code ça devrait aller.
Comme tu devrais pouvoir le voir, moi j'ai construit un objet "format", avant d'essayer de m'en servir.
Et au passage, je suis à peu près sûr que le DecimalFormat, la manière dont j'ai proposé de le construire avec mon exemple, ce n'est pas comme toi tu le fais dans ton code.
Partager