cast de float en int - C++ - Programmation
Marsh Posté le 18-05-2013 à 13:29:02
En C++, on ne fais plus (int) value mais static_cast<int>(value), sauf si on aime vivre dangereusement à l'age de pierre.
A+,
Marsh Posté le 18-05-2013 à 15:07:32
gilou a écrit : En C++, on ne fais plus (int) value mais static_cast<int>(value), sauf si on aime vivre dangereusement à l'age de pierre. |
C'est juste un float, qui est casté, c'est pas grand chose. Il manque une étape dans l'écriture, qui aurait du être un arrondi du float.
D'où ma question. est-ce qu'on est sur que ça fait un floor tout le temps?
Marsh Posté le 18-05-2013 à 15:25:43
Ceci devrait répondre à ta question.
Code :
|
Il n'y a pas que des nombres positifs dans la vie d'un programme...
La bonne conversion est donc:
(value >= 0) ? (int)(value + 0.5) : (int)(value - 0.5);
A+,
Marsh Posté le 18-05-2013 à 15:33:36
ha nan, sinon ça voudrait dire que 2.999 serait arrondi à 3
Mais en tout cas, pour le nombre négatif, va falloir que je regarde si ça peut se produire
Marsh Posté le 18-05-2013 à 15:37:39
Citation : ha nan, sinon ça voudrait dire que 2.999 serait arrondi à 3 |
Ce qui est tout a fait la bonne manière de convertir un float en entier.
Si tu veux un floor ou un ceil, eh bien tu le fais explicitement, et tu ne te reposes pas sur un cast hasardeux.
A+,
Marsh Posté le 18-05-2013 à 08:41:02
Bonjour j'ai un petit doute
Quand on cast un float en int à la c style ((int)value), est-ce que c'est toujours un floor qui est pris?
Merci