Problème avec les double en java

Fermé
geninfo25 Messages postés 10 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 25 janvier 2012 - 24 janv. 2012 à 09:37
geninfo25 Messages postés 10 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 25 janvier 2012 - 24 janv. 2012 à 14:29
Bonjour,

je veux savoir quelle est la méthode java qui nous permet de fixer le nombre des entiers après la virgule dans un nombre double .
par exemple je veux écrire le nombre 2.103651845 comme ça: 2.10

merci d'avance
A voir également:

4 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 janv. 2012 à 12:58
Tu peux t'en sortir directement à l'affichage :
double d = 2.1036451845;
System.out.printf("%.2f\n",d);
0
geninfo25 Messages postés 10 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 25 janvier 2012
24 janv. 2012 à 13:11
mais je veux afficher le résultat dans une jtextfield (jtextfield1.settext(String.valueof(d)))
ou d est le nombre 0.1025469875
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 janv. 2012 à 13:22
Il te suffit d'enlever les chiffres qui t'embêtent (je détaille, mais on peut faire ça en 3 lignes) :

double d = 0.125;
String s = String.valueOf(d);
int pos = s.indexOf('.')+1;
int sz = s.length();
int n = Math.min(pos+2, sz);
String txt = s.substring(0,n);
jtextfield1.setText(txt);
0
geninfo25 Messages postés 10 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 25 janvier 2012
Modifié par geninfo25 le 24/01/2012 à 13:49
je pense tu n'a pas me compris le nombre 0.1025..... c'est un exemple stt ,
mais moi je veux écrire des nombre double avec deux chiffres âpre la virgule c'est ça mon problème ces nombres peuvent être 0.154875852 comme ils peuvent être 4587.12544658 etc et moi je veux les écrire comme ça 0.15 et 4587.12
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 janv. 2012 à 13:59
C'est plutôt toi qui n'a pas compris le code que j'ai fait je pense...
Car tu as juste à remplacer la valeur de d de départ pour que ça aille correctement !

Je fais une fonction ce sera peut-être plus clair :

/**
 * @param d le double à convertir
 * @param nb le nombre de chiffres après la virgule
 * @return le String représentant d avec nb chiffres après la virgule
 */ 
public static String doubleToString(double d, int nb)
{
    String s = String.valueOf(d);
    int pos = s.indexOf('.')+1;
    int sz = s.length();
    int n = Math.min(pos+nb, sz);
    String txt = s.substring(0,n);
    return txt;
}

Version condensée :

public static String doubleToString(double d, int nb) {
    String s = String.valueOf(d);
    return s.substring(0,Math.min(s.indexOf('.')+1+nb, s.length()));
}

Exemple :

jtextfield1.settext(doubleToString(4587.12544658,2));
0
geninfo25 Messages postés 10 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 25 janvier 2012
24 janv. 2012 à 14:29
merci ami
0