Slightly slower, double y = floor(x): double d = x - y; if (d > 0.5) { return ceil(x); } else { return y; }
but it gives your desired result with little (visible) special casing. On Wed, Jan 19, 2011 at 8:04 AM, sebb <seb...@gmail.com> wrote: > FastMath.rint(x) has the following code: > > double y = floor(x); > double d = x - y; > > if (d > 0.5) { > return y+1.0; // round up > } > ... > > For -0.5 < x < 0 the rounding up generates +0.0 - rather than -0.0, > as expected by the sign of the input parameter. > > Is there an easy way to fix this, other than explicitly checking for y == > -1.0? > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >