floor(-0.5)

Discussion in 'C Programming' started by Francois Grieu, Feb 6, 2004.

1. Francois GrieuGuest

In ISO/IEC 9899:1999, it is unambiguous that floor(-0.5)
has the value -1 (converted to double).

Is anyone aware of an implementaton that has it wrong ?

Françosi Grieu

Francois Grieu, Feb 6, 2004

2. Keith ThompsonGuest

Francois Grieu <> writes:
> In ISO/IEC 9899:1999, it is unambiguous that floor(-0.5)
> has the value -1 (converted to double).
>

C90 says:

The floor function returns the largest integral value not greater
than x, expressed as a double.

C99 says:

The floor functions return |_ x _|, expressed as a floating-point number.

where "|_" and "_|" are my crude rendition of the mathematical symbol
for the floor function.

> Is anyone aware of an implementaton that has it wrong ?

I'm not -- and given that the function is called "floor", getting it
wrong (say, by rounding towards 0.0) would be a pretty dumb mistake.

--
Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://www.sdsc.edu/~kst>
Schroedinger does Shakespeare: "To be *and* not to be"

Keith Thompson, Feb 7, 2004

3. Francois GrieuGuest

In article <>, Keith Thompson <>
wrote:

> C90 says:
>
> The floor function returns the largest integral value not greater
> than x, expressed as a double.

Very clear indeed.

> C99 says:
>
> The floor functions return |_ x _|, expressed as a floating-point number.
>
> where "|_" and "_|" are .. the mathematical symbol for the floor function.

And |_ x _| is defined in ?3.19 as
... "the greatest integer less than or equal to x.
Example: |_ 2.4 _| is 2, |_ -2.4 _| is -3."

Thanks for the C90 quote !

Francois Grieu

Francois Grieu, Feb 7, 2004