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 :

incroyable inverse de int = int


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut incroyable inverse de int = int
    Bonsoir !

    Voilà l' algorithme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for(inti = -3; i <= 3; i++)
                {
                       if(i == 0)
                       {
                            continue;
                       }
     
                       System.out.println("inverse de " + i + " = " + (1/ i) );
     
                }
    Affichage :

    inverse de -3 = 0
    inverse de -2 = 0
    inverse de -1 = -1
    inverse de 1 = 1
    inverse de 2 = 0
    inverse de 3 = 0
    On dirait bien que l' inverse d' un int soir forcément un int. Comment cela est-il possible ?


    J' ai changé int i en double i. Et les vrais résultats se sont affichés.

  2. #2
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    En quoi est-ce choquant qu'une variable définie en tant que "int" réagisse comme un "int". Pour moi, c'est le contraire qui m'étonnerait !!

    Cordialement.

    Pierre.

  3. #3
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Quand tu divises 2 int, c'est la division entière qui est effectuée, donc les résultats sont tout à fait normaux

    Dans ton code, remplace juste 1 par 1.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    Citation Envoyé par remika
    Quand tu divises 2 int, c'est la division entière qui est effectuée, donc les résultats sont tout à fait normaux

    Dans ton code, remplace juste 1 par 1.
    quand je divise 1 par 3, je n' ai pas un int. 0.33333333 est plutôt double ou float

  5. #5
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Quand tu divise 7 par 3 par exemple et si ce sont deux int, tu effectues la division entière et ce dans beaucoup de langages de programmation dont Java, donc tu obtiens bien un int, et c'est 2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(7/3);
    Par contre si tu divises 7 par 3 et qu'un des deux est un double par exemple tu effectues la division au sens langage courant donc tu obtiens le résultat que tu souhaites : 2.3333333333333335.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(7./3);

  6. #6
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par raph707
    quand je divise 1 par 3, je n' ai pas un int. 0.33333333 est plutôt double ou float
    Ca, c'est ce que te dis ta calculatrice.

    Dans ton code :
    Code raph707 : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("inverse de " + i + " = " + (1/ i) );
    le 1 de (1/i) est un entier, i est aussi un entier, le résultat est donc un entier. Comme te le dis "remika", change le 1 de (1/i) par 1. ; cette fois, tu auras la division d'un double par un entier dont le résultat est un double.

    Cordialement.

    Pierre

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/03/2014, 21h50
  2. [caml light] ( int -> int ) -> int
    Par ylarvor dans le forum Caml
    Réponses: 5
    Dernier message: 26/11/2009, 19h35
  3. Réponses: 4
    Dernier message: 27/04/2006, 13h21
  4. fread(void*, int, int, FILE*)
    Par keil dans le forum C++
    Réponses: 11
    Dernier message: 25/01/2006, 22h13
  5. basic: const int** != int ** ?
    Par toto_fr_2002 dans le forum C
    Réponses: 10
    Dernier message: 14/11/2005, 19h28

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