Bonjour à tous,
j essaye de multiplier une variable de type float float t=3/4; avec une variable de type long long r=(long) 78; et j assigne le tout dans un int int result=r*t; et ça me donne 0. Je ne comprends pas et trouve pas.
Merci
Bonjour à tous,
j essaye de multiplier une variable de type float float t=3/4; avec une variable de type long long r=(long) 78; et j assigne le tout dans un int int result=r*t; et ça me donne 0. Je ne comprends pas et trouve pas.
Merci
Tout simplement car t vaut ici 0.0f ! En effet tu fais 3/4 soit une division entière dont le résultat vaut 0. Pour bénéficier de la promotion numérique binaire*, il faut qu'au moins une des deux operandes soit un float donc : 3f/4, 3/4f ou 3f/4f et dans ce cas on aura bien t qui vaut 0.75f.
*Si une opérande d'un opérateur binaire est un float, l'autre est promue en float.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Non ça marche pas et ceci même si je cast le resultat en int...
que 3 soit en 3f ,3.0f, 3.0, il faut faire surement un cast au bout d un moment, je le multiplie par un long avant de mettre le résultat dans un int
Quel résultat castes-tu en int ?
- Si c'est r*t, oui c'est indispensable, puisque, pour la raison indiquée par @bouye, r*t est un float (r est promue en float), donc ça ne peut pas être mis dans un int sans cast ;
- Si c'est 3f/4, alors c'est normal que le résultat soit 0, parce que (int)(3f/4) vaut 0.
Cela dit,
affiche 58.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 float t=3f/4; long r=(long) 78; // ou long r=78L; ou long r=78; int result=(int)(r*t); System.out.println(result);
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Vos "méthodes" marchent. Merci
Ben euh, ce ne sont pas des "méthodes", c'est la manières normale de faire !
3/4 ça donne 0 puisque les deux opérandes sont des int donc on a une division entière.
Ensuite 0 qui devient 0.0f quand c'est stocké dans la variable t.
Tu l'aurais vu tout de suite si tu t’étais focalisé sur t au lieu de te focaliser sur result (le problème t'aurais tout de suite sauté au yeux si tu avais imprimé t ou si tu étais passé par le débogueur).
Donc 0.0f * 78l ça fait 0.0f ce qui donne 0 après le cast en int.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager