Vérifier vos calculs.h fichier. Si vous êtes chanceux, vous avez l' nextafter
et nextafterf
fonctions définies. Ils font exactement ce que vous voulez dans un portable et indépendant de la plateforme, et qui sont une partie du standard C99.
Une autre façon de faire (peut-être une solution de secours) est de décomposer votre flotter dans la mantisse et l'exposant de la partie. L'incrémentation est facile: il suffit d'en ajouter un à la mantisse. Si vous obtenez un dépassement de capacité que vous avez à gérer cela par incrémentation de votre exposant. La décrémentation fonctionne de la même manière.
EDIT: Comme l'a souligné dans les commentaires, il suffit d'incrémenter seulement le flotteur dans sa représentation binaire. La mantisse de dépassement de l'incrémenter l'exposant, et c'est exactement ce que nous voulons.
C'est en un mot la même chose que nextafter n'.
Ce ne sera pas complètement portable si. Vous avez à traiter avec endianess et le fait que toutes les machines n'ont IEEE flotteurs (ok - la dernière raison est plus académique).
Également la manipulation NAN et infinite peut-être un peu délicat. Vous ne pouvez pas, il suffit d'incrémenter ce qu'ils sont, par définition, pas des numéros.