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

Langage Java Discussion :

Vérifier qu'un double respecte un pas d'incrément


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 51
    Points : 36
    Points
    36
    Par défaut Vérifier qu'un double respecte un pas d'incrément
    Bonjour, et bonne année à tous

    J'ai un problème avec les nombres à virgules. Je voudrais tester qu'un nombre à virgule respecte un pas d'incrément exemple :

    double Valeur = 0.5 ;
    double Pas = 0.02 ;
    double valeurMinimum = 0.02 ;
    double ValeurMaximum = 2.4 ;

    0.5 = 25 * 0.02. Donc ma valeur 0.5 respecte le pas. En java j'essaye de faire les reste de la division (opérateur %) mais le résultat me donne un chiffre égal à 0.0199999...

    Apparment cet opérateur marche avec des entiers. Y a t il une soluion pour vérifier si la valeur 0.5 respect le pas de 0.02

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Multiplier tous tes nombres par 100 et revérifier si le modulo fonctionne mieux.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 51
    Points : 36
    Points
    36
    Par défaut
    Merci,

    J'avais envisagé cette solution en multipliant par dix autnat de fois que nécessaire la valeur la plus petite pour tomber sur une valeur entiere mais je voulias savoir si il existe quelque chose de plus direct.

    Merci quand même j'esperais éviter le bricolage mais bon tant pis

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Dans le "moins bricolage", tu peux éventuellement regarder du côté de la classe BigDecimal et de sa méthode "divide".
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 51
    Points : 36
    Points
    36
    Par défaut
    Merci pour la classe BigDecimal en divisant 0.5 par 0.02 tous deux en BigDecimal j'obtiens bien 25.0 mais bon je ne connais toujours pas le reste de cette dicision peut on arriver à trouver le reste de la division avec la Classe BigDecimal ou peut être une autre m"thode pour certifier exactement que la valuer 0.5 respetce la pas de 0.02 ?

    Merci d'avance

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Du fait du mode de représentation d'un double (exposant, mantisse), tu auras toujours un risque d'un résultat "non exact". Je suis quasi sur qu'il n'existe pas de moyen simple de régler ton problème en restant avec le type de base double.

    Tu pourrais utiliser des long, en gérant un diviseur pour le décalage de la virgule.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. [SQL] Vérifier si une requête ne contient pas d'erreurs
    Par Sytchev3 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/10/2007, 16h36
  2. Réponses: 16
    Dernier message: 06/06/2007, 15h46
  3. Réponses: 2
    Dernier message: 15/03/2005, 14h24
  4. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22

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