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

avec Java Discussion :

Obtenir un nombre à virgule sans l'arrondir


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut Obtenir un nombre à virgule sans l'arrondir
    Bonjour !
    J'essaye en vain de diviser un entier par 1000 mais je n'y arrive pas sans l'arrondir à l'entier supérieur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    long timestamp = 1100;			
    long timestamp_old = 2000;
    long longduration = 0;
    float floatduration = 0;
     
    longduration = timestamp - timestamp_old ; //= 900
    floatduration = longduration / 1000;
    Ma variable floatduration prends la valeur 0.0 alors que j'attends 0.9

    Je sais que c'est du au fait que float arrondi les nombres mais je ne sais pas comment faire dans mon cas pour garder la précisition de ma variable longduration en la divisant.

    Le but est de passer de milliseconde à seconde avec décimale.

    Ex : 900 millisecondes = 0.9 secondes

    Merci d'avance

  2. #2
    Membre actif Avatar de akrom
    Homme Profil pro
    Automaticien
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 201
    Points
    201
    Par défaut
    le long est un entier donc quand tu fait ta division tu divise un entier par 1000 ce qui retourne un entier et tu le mets le résultat dans un float .
    tu doit faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    long timestamp = 1100;			
    long timestamp_old = 2000;
    long longduration = 0;
    float floatduration = 0;
     
    longduration = timestamp - timestamp_old ; //= 900
    floatduration =( (float)longduration) / 1000;
    En castant le long en float l'opération se fait sur des float tu auras donc tes décimales.
    On peut tout faire seul avec de la persévérance mais ça va plus vite à plusieurs.

    Je ne répondrais pas aux questions technique par MP .

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    À noter que 0.9 ne peut pas être représenté exactement en float (ni double d'ailleurs,) mais aura plutôt une valeur autour de 0.8999999762 .
    Ce qui, avec un affichage arrondi à un nombre raisonnable de décimales, affichera bel et bien 0.9. Mais un affichage très précis donnera ne donnera qu'une valeur proche.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Merci à tous les deux !

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

Discussions similaires

  1. Nombre entier sans virgule
    Par Marie57000 dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2011, 18h56
  2. Réponses: 26
    Dernier message: 15/10/2010, 13h18
  3. Inverser le signe d'un nombre sans l'arrondir
    Par atoffoli75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/07/2008, 15h17
  4. Nombre décimal sans la virgule
    Par totoff80 dans le forum Débuter
    Réponses: 10
    Dernier message: 11/04/2008, 12h43
  5. Comment obtenir le nombre de documents en attente d'impression ?
    Par Cambon dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 25/03/2005, 09h17

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