Probléme bizarre eb c++

Résolu/Fermé
Anis - 10 août 2007 à 20:10
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 10 août 2007 à 21:03
Probleme

Bonjour,
svp je travaille sous visual C++ 6.0 j'ai un prob avec le format double
par exemple
en prenant gamma1=0.5;gamma2=0.5; j'obtiens un résulats

et en prenant gamma1=1/2;gamma2=1/2; j'obtiens un autre résultat différent

bizzare? c quoi le probléme? c un probléme de format? 1/2 c bien 0.5 non? lol

2 réponses

mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
10 août 2007 à 20:27
Non c'est normal car 1/2 est un int (donc vaut 0) et 0.5 est un flottant (cond vaut 0.5). Si tu veux utiliser l'écriture fractionnaire il faut que le numérateur soit un flottant (ou multiplié à gauche par 1.0)

Exemple
#include <iostream>

int main(){
    double x = 0.5, y = 1/2, z = 1.0/2;
    std::cout << " x = " << x << " y = " << y << " z = " << z << std::endl;
    return 0;
}

Donne à l'exécution :
x = 0.5 y = 0 z = 0.5

Bonne chance
0
Anis525 Messages postés 1 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 10 août 2007
10 août 2007 à 20:38
merci pour votre réponse, c vraiment fou ce langage
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
10 août 2007 à 21:03
Non ! 1 / 2 c'est la division dans l'ensemble des entiers, donc c'est normal que ça retourne un entier. 1.0 / 2 c'est la division d'un réel par un entier (que l'on peut assimiler à un flottant), donc ça retourne un réel. C'est juste que pour toi implicitement 1 et 2 sont des réels alors que ce sont deux entiers, donc C++ utilise la division dans l'ensemble des entiers.

Bonne chance
0