No. Indeed not. And if it calls floor then it isn't likely to give the desired -0 result.
How important is it to return -0 instead of +0 anyway? On Wed, Jan 19, 2011 at 10:17 AM, sebb <seb...@gmail.com> wrote: > On 19 January 2011 16:25, Ted Dunning <ted.dunn...@gmail.com> wrote: > > Slightly slower, > > Unfortunately, I suspect it is about twice as slow for this case, > because FastMath.ceil() actually calls FastMath.floor(). > > Not ideal for FastMath ! > > > > > 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 > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >