Convertissez d'abord en un type intégral, tel que int
o long
et ensuite effacer le bit le plus bas.
float f = 55.2f;
int i = (int)f & ~1;
Explication
~
signifie l'inverse au niveau du bit, c'est-à-dire que toutes les valeurs de 0
Les bits deviennent 1
et vice versa.
Donc, si 1
a la configuration binaire
0...0001
entonces ~1
es
1...1110
(Ici, j'utilise ...
pour représenter tous les bits intermédiaires, selon la taille d'un entier sur votre plateforme).
Quand vous &
(bitwise AND) votre entier avec 1...1110
vous préservez la valeur de chaque bit, à l'exception du bit le plus bas, qui est forcé à 0
. Voir cette description de l'opérateur ET binaire si vous ne comprenez toujours pas.
En forçant le bit le plus bas à être 0
vous arrondissez le nombre au nombre pair le plus proche.