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

Reply via email to