Bonjour,
m'y connaissant pas trop, je voulais savoir si on pouvait multiplier un entier avec un décimal, et si oui, quel est le code à utiliser ?
Merci.
Bonjour,
m'y connaissant pas trop, je voulais savoir si on pouvait multiplier un entier avec un décimal, et si oui, quel est le code à utiliser ?
Merci.
Le résultat d'une multiplication entre un int et un float est un float
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int entier = 2; float decimal = 2.5; float resultat = entier * decimal;
Merci beaucoup, en fait, j'utilisais la virgule au lieu du point.![]()
Bonjour,
Si je puis me permettre d'ajouter un paire de remarques:
Tout d'abord, en vérité cela va dépendre du type du résultat. Ensuite, je conseille toujours, dans ce cas, de spéficier explicitement le cast:
D'ailleurs tout bon comilateur bien réglé donnera un warning à la compilation si on ne spécifie pas explicitement le cast. Le cast explicite permet une lecture plus claire du code: on voit mieux ce que le développeur (souvent nous-même quand on doit modifier ou relire notre propre code) a voulu faire. Et dans certains cas un peu complexe, ça aide le compilateur à optimiser ou même à savoir ce qu'il faut faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int entier = 2; float decimal = 2.5f; float resultatFlottant = (float) entier * decimal; int resultatEntier = entier * (int) decimal;
C'est pas plutôt un double ?Le résultat d'une multiplication entre un int et un float est un float
Si tu veux des decimaux, il faut te les fabriquer ou trouver une bibliotheque deja existante. Les flottants sont rarement decimaux (en fait je n'ai jamais entendu parler d'une implementation de C++ qui avait des float decimaux; mais il y a un TR en cours pour ca et le TR correspondant pour le C est deja passe).
Non. En C pre-norme c'etait bien le cas et il y a toujours une lattitude pour utiliser des formats plus precis pour les calculs intermediaires -- ce qui est plutot genant quand on cherche a controler les arrondis precisement.
Ah oui, en effet.
Ce genre de promotions c'est que pour les entiers.
Il y a des conséquences pires.il y a toujours une lattitude pour utiliser des formats plus precis pour les calculs intermediaires -- ce qui est plutot genant quand on cherche a controler les arrondis precisement.
std::set<std::pair<float, int>> ne marche pas à cause de ça. L'un des flottants peut être inférieur à l'autre avec une grande précision mais ils peuvent être égaux en précision normale.
Pour std::set<float>, par contre, ça marche quand même.
Partager