Subject: Re: Gnu Common Lisp HELP! From: Erik Naggum <erik@naggum.no> Date: 1996/01/12 Newsgroups: comp.lang.lisp Message-ID: <19960112T003832Z@arcana.naggum.no> a clarification of my previous article may be necessary if you're unfamiliar with rounding functions. | note that the Common Lisp `round' function rounds to even integers. rounding functions differ in behavior for the value N + 1/2. some round up to N + 1, some round down to N, some round to the nearest even integer, some round towards zero (down for positive values, up for negative values), some round towards infinity (the opposite). for all other values, these functions agree that N + F, for -1/2 < F < 1/2, rounds to N. here's a breakdown that might illustrate this mess: up down even zero infinity -4.7 -5 -5 -5 -5 -5 -4.5 -4 -5 -4 -4 -5 -4.2 -4 -4 -4 -4 -4 -3.5 -3 -4 -4 -3 -4 3.5 4 3 4 3 4 4.2 4 4 4 4 4 4.5 5 4 4 4 5 4.7 5 5 5 5 5 I hope this forestalls any confusion. note that when computing values with floating point representation, losing bits of precision requires rounding. very frequently (if not exclusively), one loses exactly one bit of precision, and when this happens, the smallest accumulated rounding error is obtained by rounding to even. Common Lisp offers a number of other float-or-rational-to-integer conversion functions, as well: floor (truncate towards negative infinity), ceiling (truncate towards positive infinity), and truncate (towards zero). #<Erik 3030395912> -- the problem with this "information superhighway" is mainly that if you ask people to go play in it, they don't even understand when they get run over.