IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Double et format.


Sujet :

API standards et tierces Java

  1. #1
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut Double et format.
    Bonjour,

    J'ai en entrée un Double ou double.

    je voudrai une methode qui me retourne si le double est en dixieme, centieme, millieme.
    Concretement si j'ai 0.09 en entré la methode doit me retourner 0.01
    si j'ai 8 elle me retourne 1 si j'ai 850 elle me retourne 100.

    En gros j'entre un double et j'ai son format en retour...
    Est ce que ca existe déja ??

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    tu peut programmer ca en mettant la valeur numérique dans une chaine et tu teste le nombre de chiffres ainsi que la position de la virgule flottante

  3. #3
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Merci c'est ce que j'ai fini par faire...

    J voulai juste savoir si quelque chose existait déja.

    Merci

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut Plus de précisions
    Bonjour,

    il me semble que la fonction que tu décris s'appelle en mathématique "précision" et en science en général, "l'ordre de grandeur". On dit que l'on a une précision à 10^(-2) près par exemple. En Java, on utilise la méthode ulp de la classe java.lang.Math.

    Bonne journée.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  5. #5
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    quand je fais cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(Math.ulp(0.00098));
    ca me retourne :
    2.1684043449710089E-19

    or moi je voudrai que ca me retourne soit le nombre de chiffre apres "." donc 5
    soit 0.00001 par exemple.. car là je ne comprend pas bien ce que retourne ta methode...

    Merci qd meme

  6. #6
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 558
    Points : 15 481
    Points
    15 481
    Par défaut
    Je pense qu'essayer d'avoir cette information avec un double est une hérésie étant donné que la différence de base(les float sont binaires alors que tu veux connaitre le nombre de chiffres après la virgule pour la notation décimale) va conduire a des erreur d'arrondi.

    Je pense qu'un BigDécimal est bien plus adapté a ton besoin.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par L4BiN Voir le message
    Bonjour,

    J'ai en entrée un Double ou double.

    je voudrai une methode qui me retourne si le double est en dixieme, centieme, millieme.
    Concretement si j'ai 0.09 en entré la methode doit me retourner 0.01
    si j'ai 8 elle me retourne 1 si j'ai 850 elle me retourne 100.

    En gros j'entre un double et j'ai son format en retour...
    Est ce que ca existe déja ??

    Merci d'avance.
    Soit utilise un bigdecimal (qui est précis dans sa notation), soit passe comme tu l'a fait par une string. Attention: le passage par une string marchera en grande partie avec un double, car java fait els arrondis nécessaire pour que 0.01 -> double -> string termine bien en 0.01, mais si tu fais le meme avec un float tu verra que java affiche le float 0.01f sous la forme: 0,009999999776482582000000000000, donc si tu passe par un float à un endroit, c'est fichu

  8. #8
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut Un petit test avec BigDecimal
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    static void testUlpBigDecimal() {
            System.out.println("testUlpBigDecimal : ");
     
            BigDecimal bd1 = new BigDecimal("2.150");
            BigDecimal bd2 = new BigDecimal("552");
            BigDecimal bd3 = new BigDecimal("-263.41");
     
            System.out.println(bd1 + " : " + bd1.ulp());  // 0.001
            System.out.println(bd2 + " : " + bd2.ulp());  // 1
            System.out.println(bd3 + " : " + bd3.ulp());  // 0.01
        }
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir un double en format monétaire
    Par lynepicard dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/08/2007, 16h32
  2. float ou double, mauvais format?
    Par didier17062006 dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/10/2006, 12h42
  3. format d'affichage d'un double
    Par couturier dans le forum C++
    Réponses: 1
    Dernier message: 25/01/2006, 17h41
  4. [VB.Net] Convertir un nombre au format double en date
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/11/2005, 15h34
  5. [Format] Formater un double
    Par Oliveuh dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 16/02/2005, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo