salut je veux savoir comment rendre un nombre de type double avec virgule flottante en virgule fixe avec une précision donnée
et merci en avance
salut je veux savoir comment rendre un nombre de type double avec virgule flottante en virgule fixe avec une précision donnée
et merci en avance
Peut être en travaillant avec un BigDecimal.
salut j ai trouvé une solution adéquate à ce problème .
j ai développé une fonction qui transforme un double en String puis cherche la virgule et prendre la partie réelle et la précision des nombres aprés la virgule.
voici le code
et merci en tous cas
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 public double fix_virgule(double nembr_virgul_flottant){ String nembr_virgul_fixe_str=""; // transformer le nombre en chaine de caractère et ajouter des zéros pour le cas où il est entier String nembr_virgul_flottant_str=nembr_virgul_flottant+"00"; double nembr_virgul_fixe=0; //boucle for pour traverser la chaine de caractère en cherchant la virgule for(int i=0;i<nembr_virgul_flottant_str.length();i++) // condition si la virgule trouvée if (nembr_virgul_flottant_str.charAt(i)== '.'){ // extraire la sous chaine qui contient la valeur entière plus 2 chiffre après la virgule nembr_virgul_fixe_str=nembr_virgul_flottant_str.substring(0,i+3); // convertir cette chaine en double nembr_virgul_fixe=Double.parseDouble(nembr_virgul_fixe_str); // pour quitter la boucle break; } return nembr_virgul_fixe; }![]()
çà te renvoie un double, donc un nombre à virgule flottante. De plus, pour rappel, les nombres à virgule flottante sont enregistré en binaire, la notation 'virgule fixe' comme tu essaie de la faire, c'est une notation décimale. Il n'y a pas de conversion 100% correct entre, par exemple, 0.001 et un nombre binaire à virgule flottante, t'as toujours une perte de précision. Généralement, on la compense lors de l'affichage, car l'erreur est plein de fois derrière la virgule, mais elle existe.
Si t'as besoin du nombre + deux chiffres après la virgule (vraisemblablement du calcul financier....), travaille directement avec des int et considère ceux-ci comme un représentation en centimes. La, tu aura de la virgule fixe!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager