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