Add 0.5 and truncate, I might say. But do you also need to consider negative values?
Code:
#include <stdio.h>
int foo(double value)
{
return value < 0 ? value - 0.5 : value + 0.5;
}
int bar(double value)
{
return value + 0.5;
}
int main()
{
double x = 3.322884;
double y = 3.700219;
printf("foo(%f) = %d, foo(%f) = %d\n", x, foo(x), y, foo(y));
printf("bar(%f) = %d, bar(%f) = %d\n", x, bar(x), y, bar(y));
x = -x;
y = -y;
printf("foo(%f) = %d, foo(%f) = %d\n", x, foo(x), y, foo(y));
printf("bar(%f) = %d, bar(%f) = %d\n", x, bar(x), y, bar(y));
return 0;
}
/* my output
foo(3.322884) = 3, foo(3.700219) = 4
bar(3.322884) = 3, bar(3.700219) = 4
foo(-3.322884) = -3, foo(-3.700219) = -4
bar(-3.322884) = -2, bar(-3.700219) = -3
*/
Then perhaps it might be: increase distance from zero by 0.5.