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 <[email protected]> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>