Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor() à (a/b)*c (motif : l'argument n'est pas un double...)
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int
? - floor() attend un double comme argument... Soit mais quel est le type
duy résultat ? un double ? un int ?
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor() à (a/b)*c (motif : l'argument n'est pas un double...)
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int
? - floor() attend un double comme argument... Soit mais quel est le type
duy résultat ? un double ? un int ?
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor() à (a/b)*c (motif : l'argument n'est pas un double...)
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int
? - floor() attend un double comme argument... Soit mais quel est le type
duy résultat ? un double ? un int ?
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int
?
- floor() attend un double comme argument... Soit mais quel est le type
duy
résultat ? un double ? un int ?
- comment résoudre cet épineux problème de façon élégante ??? ;-)
Quelqu'un peut-t-il m'aider ?
Merci d'avance !
Rincevent
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int
?
- floor() attend un double comme argument... Soit mais quel est le type
duy
résultat ? un double ? un int ?
- comment résoudre cet épineux problème de façon élégante ??? ;-)
Quelqu'un peut-t-il m'aider ?
Merci d'avance !
Rincevent
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int
?
- floor() attend un double comme argument... Soit mais quel est le type
duy
résultat ? un double ? un int ?
- comment résoudre cet épineux problème de façon élégante ??? ;-)
Quelqu'un peut-t-il m'aider ?
Merci d'avance !
Rincevent
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel résultat)
Comment faites-vous pour mener ce calcul de tête ou avec papier-crayon
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
En C++, floor() est surchargée pour admettre plusieurs prototypes dont
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int ?
- floor() attend un double comme argument... Soit mais quel est le type duy
résultat ? un double ? un int ?
- comment résoudre cet épineux problème de façon élégante ??? ;-)
En téléchargeant un peu de documentation ?
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel résultat)
Comment faites-vous pour mener ce calcul de tête ou avec papier-crayon
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
En C++, floor() est surchargée pour admettre plusieurs prototypes dont
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int ?
- floor() attend un double comme argument... Soit mais quel est le type duy
résultat ? un double ? un int ?
- comment résoudre cet épineux problème de façon élégante ??? ;-)
En téléchargeant un peu de documentation ?
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel résultat)
Comment faites-vous pour mener ce calcul de tête ou avec papier-crayon
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
En C++, floor() est surchargée pour admettre plusieurs prototypes dont
- Je suppose qu'il doit exister une fonction pour convertir des rapports
d'entier en double, non ?
- Et inversement pour passer d'un double codant un entier --> en type int ?
- floor() attend un double comme argument... Soit mais quel est le type duy
résultat ? un double ? un int ?
- comment résoudre cet épineux problème de façon élégante ??? ;-)
En téléchargeant un peu de documentation ?
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel
résultat)
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor()
à (a/b)*c (motif : l'argument n'est pas un double...)
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
"Rincevent" a écrit dans le message de news:
[...]
1) on fixe N le nb de niveaux de gris differents d'une image (N%6)
int N = 256;
2) On obtient, par un procédé qui n'est pas décrit ici, une image M
representée par une matrice dont les éléments sont des entiers compris entre
0 et 255 (donc 256 valeurs en tout)
3) Après traitement, je suis en mesure de déterminer les particules de
l'image, càd les ensembles de points connexes par arcs.
Je souhaite "colorier" ces particules en fonctions de leurs tailles.
4) Pour cela, on demande à l'utilisateur combien de classe de particules il
souhaite (classe : au sens mathématique). Ce nombre est stocké dans P.
P est également un entier !
5) Pour la particules appartenant à la k-ème classe, sa couleur est donc
(canoniquement) donnée par (k/P)*N
(k/P)*N n'est pas forcément un entier, on prends donc la partie entière pour
être sur...
Tous vos entierzs sont positifs, déclarez-les donc unsigned. N est une
"Rincevent" <rincevent@nospam.fr> a écrit dans le message de news:
[...]
1) on fixe N le nb de niveaux de gris differents d'une image (N%6)
int N = 256;
2) On obtient, par un procédé qui n'est pas décrit ici, une image M
representée par une matrice dont les éléments sont des entiers compris entre
0 et 255 (donc 256 valeurs en tout)
3) Après traitement, je suis en mesure de déterminer les particules de
l'image, càd les ensembles de points connexes par arcs.
Je souhaite "colorier" ces particules en fonctions de leurs tailles.
4) Pour cela, on demande à l'utilisateur combien de classe de particules il
souhaite (classe : au sens mathématique). Ce nombre est stocké dans P.
P est également un entier !
5) Pour la particules appartenant à la k-ème classe, sa couleur est donc
(canoniquement) donnée par (k/P)*N
(k/P)*N n'est pas forcément un entier, on prends donc la partie entière pour
être sur...
Tous vos entierzs sont positifs, déclarez-les donc unsigned. N est une
"Rincevent" a écrit dans le message de news:
[...]
1) on fixe N le nb de niveaux de gris differents d'une image (N%6)
int N = 256;
2) On obtient, par un procédé qui n'est pas décrit ici, une image M
representée par une matrice dont les éléments sont des entiers compris entre
0 et 255 (donc 256 valeurs en tout)
3) Après traitement, je suis en mesure de déterminer les particules de
l'image, càd les ensembles de points connexes par arcs.
Je souhaite "colorier" ces particules en fonctions de leurs tailles.
4) Pour cela, on demande à l'utilisateur combien de classe de particules il
souhaite (classe : au sens mathématique). Ce nombre est stocké dans P.
P est également un entier !
5) Pour la particules appartenant à la k-ème classe, sa couleur est donc
(canoniquement) donnée par (k/P)*N
(k/P)*N n'est pas forcément un entier, on prends donc la partie entière pour
être sur...
Tous vos entierzs sont positifs, déclarez-les donc unsigned. N est une
"Rincevent" typa:Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel résultat)
Comment faites-vous pour mener ce calcul de tête ou avec papier-crayon
? Commencez-vous par diviser ? Avez vous besoin de flottants pour
traiter le problème ?
Si vous faites :
int resultat = (a*c)/b;
vous traitez exactement le problème tel qu'il est posé, c'est à dire
comme un problème d'entiers.
"Rincevent" <rincevent@nospam.fr> typa:
Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel résultat)
Comment faites-vous pour mener ce calcul de tête ou avec papier-crayon
? Commencez-vous par diviser ? Avez vous besoin de flottants pour
traiter le problème ?
Si vous faites :
int resultat = (a*c)/b;
vous traitez exactement le problème tel qu'il est posé, c'est à dire
comme un problème d'entiers.
"Rincevent" typa:Bonjour à tous,
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
J'utilise pour cela la fonction floor() de <cmath>
Or deux problèmes se présentent :
1) Le compilateur renvoie 0 lorsque je lui demande de calculer (a/b)*c (et
ce, alors que les valeurs de a,b,c ne devraient pas donner un tel résultat)
Comment faites-vous pour mener ce calcul de tête ou avec papier-crayon
? Commencez-vous par diviser ? Avez vous besoin de flottants pour
traiter le problème ?
Si vous faites :
int resultat = (a*c)/b;
vous traitez exactement le problème tel qu'il est posé, c'est à dire
comme un problème d'entiers.
le Monday 24 May 2004 10:26, écrivit :
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor() à (a/b)*c (motif : l'argument n'est pas un double...)
je crois que c'est pas ça que te dit le compilo (ou alors il est
bizarre) Tu dois sûrement faire un truc comme :
int n = floor(a/b*c);
et c'est dans le '=' qu'il y a problème : un double à droite, un int à
gauche.
solution :
int n = static_cast<int>(floor((a*1.0/b) *c) );
- Je suppose qu'il doit exister une fonction pour convertir des
rapports d'entier en double, non ?
un "rapport d'entier" est un entier. et ça se convertit donc
automatiquement en double si besoin.- Et inversement pour passer d'un double codant un entier --> en
type int ? - floor() attend un double comme argument... Soit mais
quel est le type duy résultat ? un double ? un int ?
tu n'as aucune doc ?
il faudrait au moins que tu aies des références des fctions de la
librairie C et C++ si tu veux arriver à qque chose ...
http://www.dinkumware.com/manuals/reader.aspx?lib=cpl&h=math.html#floor
le Monday 24 May 2004 10:26, rincevent@nospam.fr écrivit :
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor() à (a/b)*c (motif : l'argument n'est pas un double...)
je crois que c'est pas ça que te dit le compilo (ou alors il est
bizarre) Tu dois sûrement faire un truc comme :
int n = floor(a/b*c);
et c'est dans le '=' qu'il y a problème : un double à droite, un int à
gauche.
solution :
int n = static_cast<int>(floor((a*1.0/b) *c) );
- Je suppose qu'il doit exister une fonction pour convertir des
rapports d'entier en double, non ?
un "rapport d'entier" est un entier. et ça se convertit donc
automatiquement en double si besoin.
- Et inversement pour passer d'un double codant un entier --> en
type int ? - floor() attend un double comme argument... Soit mais
quel est le type duy résultat ? un double ? un int ?
tu n'as aucune doc ?
il faudrait au moins que tu aies des références des fctions de la
librairie C et C++ si tu veux arriver à qque chose ...
http://www.dinkumware.com/manuals/reader.aspx?lib=cpl&h=math.html#floor
le Monday 24 May 2004 10:26, écrivit :
2) Le compilateur m'insulte lorsque j'essaie d'appliquer la fonction
floor() à (a/b)*c (motif : l'argument n'est pas un double...)
je crois que c'est pas ça que te dit le compilo (ou alors il est
bizarre) Tu dois sûrement faire un truc comme :
int n = floor(a/b*c);
et c'est dans le '=' qu'il y a problème : un double à droite, un int à
gauche.
solution :
int n = static_cast<int>(floor((a*1.0/b) *c) );
- Je suppose qu'il doit exister une fonction pour convertir des
rapports d'entier en double, non ?
un "rapport d'entier" est un entier. et ça se convertit donc
automatiquement en double si besoin.- Et inversement pour passer d'un double codant un entier --> en
type int ? - floor() attend un double comme argument... Soit mais
quel est le type duy résultat ? un double ? un int ?
tu n'as aucune doc ?
il faudrait au moins que tu aies des références des fctions de la
librairie C et C++ si tu veux arriver à qque chose ...
http://www.dinkumware.com/manuals/reader.aspx?lib=cpl&h=math.html#floor
"Rincevent" a écrit dans le message de news:
c8sbjv$cug$g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
Pour info, mon programme doit effectuer (en simplifiant) ces n processus :
1) on fixe N le nb de niveaux de gris differents d'une image (N%6)
int N = 256;
2) On obtient, par un procédé qui n'est pas décrit ici, une image M
representée par une matrice dont les éléments sont des entiers compris entre
0 et 255 (donc 256 valeurs en tout)
3) Après traitement, je suis en mesure de déterminer les particules de
l'image, càd les ensembles de points connexes par arcs.
Je souhaite "colorier" ces particules en fonctions de leurs tailles.
4) Pour cela, on demande à l'utilisateur combien de classe de particules il
souhaite (classe : au sens mathématique). Ce nombre est stocké dans P.
P est également un entier !
5) Pour la particules appartenant à la k-ème classe, sa couleur est
donc (canoniquement) donnée par (k/P)*N (k/P)*N n'est pas forcément un
entier, on prends donc la partie entière pour être sur...
"Rincevent" <rincevent@nospam.fr> a écrit dans le message de news:
c8sbjv$cug$1@news-reader1.wanadoo.fr...
g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
Pour info, mon programme doit effectuer (en simplifiant) ces n processus :
1) on fixe N le nb de niveaux de gris differents d'une image (N%6)
int N = 256;
2) On obtient, par un procédé qui n'est pas décrit ici, une image M
representée par une matrice dont les éléments sont des entiers compris entre
0 et 255 (donc 256 valeurs en tout)
3) Après traitement, je suis en mesure de déterminer les particules de
l'image, càd les ensembles de points connexes par arcs.
Je souhaite "colorier" ces particules en fonctions de leurs tailles.
4) Pour cela, on demande à l'utilisateur combien de classe de particules il
souhaite (classe : au sens mathématique). Ce nombre est stocké dans P.
P est également un entier !
5) Pour la particules appartenant à la k-ème classe, sa couleur est
donc (canoniquement) donnée par (k/P)*N (k/P)*N n'est pas forcément un
entier, on prends donc la partie entière pour être sur...
"Rincevent" a écrit dans le message de news:
c8sbjv$cug$g un gros problème dans mon programme C++.
Voilà g 3 entier a,b et c
Je souhaite calculer la partie entière de (a/b)*c
Pour info, mon programme doit effectuer (en simplifiant) ces n processus :
1) on fixe N le nb de niveaux de gris differents d'une image (N%6)
int N = 256;
2) On obtient, par un procédé qui n'est pas décrit ici, une image M
representée par une matrice dont les éléments sont des entiers compris entre
0 et 255 (donc 256 valeurs en tout)
3) Après traitement, je suis en mesure de déterminer les particules de
l'image, càd les ensembles de points connexes par arcs.
Je souhaite "colorier" ces particules en fonctions de leurs tailles.
4) Pour cela, on demande à l'utilisateur combien de classe de particules il
souhaite (classe : au sens mathématique). Ce nombre est stocké dans P.
P est également un entier !
5) Pour la particules appartenant à la k-ème classe, sa couleur est
donc (canoniquement) donnée par (k/P)*N (k/P)*N n'est pas forcément un
entier, on prends donc la partie entière pour être sur...
int n = floor(a/b*c);
et c'est dans le '=' qu'il y a problème : un double à droite, un int à
gauche.
solution :
int n = static_cast<int>(floor((a*1.0/b) *c) );
La conversion double en int est implicite en C++. Si le compilateur émet
plus d'un avertissement lors de l'affectation, ça m'étonnerait.
Je crois que le problème c'est plutôt qu'en C++, floor est surchargé,
pour float, double et long double. Et quand on lui passe un int, c'est
ambigu, parce que le compilateur ne sait pas laquelle des trois
fonctions choisir.
En passant, ces surcharges cassent du code existant pré-norme,
puisqu'avant la norme, quelque chose comme exp(3) était légal. L'intérêt
du surcharge est évident (à mon avis, en tout cas), mais ils auraient
peut-être dû ajouter des surcharges sur int, etc., pour ce genre de cas.
int n = floor(a/b*c);
et c'est dans le '=' qu'il y a problème : un double à droite, un int à
gauche.
solution :
int n = static_cast<int>(floor((a*1.0/b) *c) );
La conversion double en int est implicite en C++. Si le compilateur émet
plus d'un avertissement lors de l'affectation, ça m'étonnerait.
Je crois que le problème c'est plutôt qu'en C++, floor est surchargé,
pour float, double et long double. Et quand on lui passe un int, c'est
ambigu, parce que le compilateur ne sait pas laquelle des trois
fonctions choisir.
En passant, ces surcharges cassent du code existant pré-norme,
puisqu'avant la norme, quelque chose comme exp(3) était légal. L'intérêt
du surcharge est évident (à mon avis, en tout cas), mais ils auraient
peut-être dû ajouter des surcharges sur int, etc., pour ce genre de cas.
int n = floor(a/b*c);
et c'est dans le '=' qu'il y a problème : un double à droite, un int à
gauche.
solution :
int n = static_cast<int>(floor((a*1.0/b) *c) );
La conversion double en int est implicite en C++. Si le compilateur émet
plus d'un avertissement lors de l'affectation, ça m'étonnerait.
Je crois que le problème c'est plutôt qu'en C++, floor est surchargé,
pour float, double et long double. Et quand on lui passe un int, c'est
ambigu, parce que le compilateur ne sait pas laquelle des trois
fonctions choisir.
En passant, ces surcharges cassent du code existant pré-norme,
puisqu'avant la norme, quelque chose comme exp(3) était légal. L'intérêt
du surcharge est évident (à mon avis, en tout cas), mais ils auraient
peut-être dû ajouter des surcharges sur int, etc., pour ce genre de cas.