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 :

Float avec "f"


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut Float avec "f"
    Bonjour,

    J'aurais voulu savoir à quoi exactement servait le fait de mettre "f" apres un numérique?En fait voici un exmeple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    float a = 39.9;
    float b = 12;
     
    System.out.println(a-b);
    là ca me met une erreur de compilation(loss of precision) alors je met ca à la place:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float a = (float)39.9;
    float b = (float)12;
    System.out.println(a-b);
    Et là ca me marque comme résultat ca:27.900002
    Alors que si je remplace 39.9 par 39.2 ca fonctionne correctement,pourquoi?
    Et enfin j'ai vu qu'on pouvais mettre "f" à la fin de la déclaration pour dire que c'est un float mais dans ma declaration : float f = 39.9,normalement c'est déjà un float non?

    Merci d'avance
    Pourquoi ca marche jamais?Vive le café!

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    http://java.developpez.com/faq/java/...ecisionCalculs

    Pour tes floats et ton erreur de précision c'est parce que 39.9 est un double et que 12 est un int. Tu l'obliges à les placer dans des floats et il aime pas ça. C'est pour ça qu'il faut mettre le f.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut Re: Float avec "f"
    Citation Envoyé par nicotine002
    Bonjour,

    J'aurais voulu savoir à quoi exactement servait le fait de mettre "f" apres un numérique?En fait voici un exmeple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    float a = 39.9;
    float b = 12;
     
    System.out.println(a-b);
    là ca me met une erreur de compilation(loss of precision) alors je met ca à la place:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float a = (float)39.9;
    float b = (float)12;
    System.out.println(a-b);
    Et là ca me marque comme résultat ca:27.900002
    Alors que si je remplace 39.9 par 39.2 ca fonctionne correctement,pourquoi?
    Et enfin j'ai vu qu'on pouvais mettre "f" à la fin de la déclaration pour dire que c'est un float mais dans ma declaration : float f = 39.9,normalement c'est déjà un float non?

    Merci d'avance
    Et bien non!

    les constantes du style :
    13.5
    14.2
    etc...

    sont du type double et non pas float ce qui explique que tu ai besoin de les caster en Float (puisque tu peux avoir une perte de précision).

    Les constantes du type float s'écrive ainsi :

    13.5F
    14.2F
    etc...

    De même pour écrire les constantes doubles on peut aussi écrire :
    14.2D
    154.02D

    Cependant si on omet le suffixe à une constante numérique à virgule, Java la considère par défaut comme étant une constante Double.

    Les constantes numériques sans virgules sont elles du type int.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  4. #4
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Ok merci de vos réponses,
    Mais je croyais que la seule différence entre un float et un double était la précision aprés la virgule non?
    Pourquoi ca marche jamais?Vive le café!

  5. #5
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    En tout cas je suis un peu dégouté, ca ce sont les bases quand même et je ne savais même pas qu'on pouvait mettre "f" ou "d" après un numérique
    Pourquoi ca marche jamais?Vive le café!

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Y a pas de quoi être dégouté, les float et cie c'est pas ce qu'on utilise le plus en général dans les programmes.

    De toute façon pour faire des calculs, il vaut mieux, selon moi, utiliser BigDecimal(String).
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  7. #7
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Ok merci, je pense que j'ai à peu prés tout compris.
    Avec les Bigdecimal ca fonctionne trés bien vu que dans mon projet je recupere presque tout le temps des String.
    Encore merci
    Pourquoi ca marche jamais?Vive le café!

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

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