minus zero

For the Compleat Fan
Locked
nigelbrown
Posts: 429
Joined: Tue Nov 11, 2003 2:11 am
Location: Brisbane, Australia

minus zero

Post by nigelbrown »

I've noticed that:
> (ceil 0.0001)
1
> (ceil -0.0001)
-0
> (setq minuszero (ceil -0.0001))
-0
> minuszero
-0
> (= 0 minuszero)
true

The maths I've tried minuszero with act as I'd expect
except perhaps
> (abs minuszero )
-0
>

and (format doesn't like minuszero viz.
> (format "%d" minuszero)

data type and format don't match in function format : minuszero

> minuszero
-0
> (format "%x" minuszero)

data type and format don't match in function format : minuszero

>


Nigel

nigelbrown
Posts: 429
Joined: Tue Nov 11, 2003 2:11 am
Location: Brisbane, Australia

Post by nigelbrown »

Sorry, of course data type and format don't match,
minus zero is a float
newLISP v7.4.0 Copyright (c) 2003 Lutz Mueller. All rights reserved.

> (setq mz (ceil -0.001))
-0
> (format "%f" mz)
"-0.000000"
>

I guess it's just a little quirk of computer floating point.

Nigel

Lutz
Posts: 5289
Joined: Thu Sep 26, 2002 4:45 pm
Location: Pasadena, California
Contact:

Post by Lutz »

Yes, when newLISP displays floats it uses the '%g' format so:

(set 'x 0.000) => 0

x => 0

that makes you than think it is an integer, but it is still a float.

Lutz

Locked