lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Tue, Sep 21, 2010 at 05:01:13AM +0000, J.J?rgen von Bargen wrote:

> local function round(x)
> 	if x<0 then return -round(-x) end
> 	return  math.floor(x+0.5)
> end
> 
> Test with -1.5 : my round=-2 your round=-1

Yes, handling values that have a fraction part exactly equal to 0.5 is
a little tricky.  Your method is "round half away from zero" in the
tie-breaking section here:

    http://en.wikipedia.org/wiki/Rounding#Rounding_to_integer

I was actually surprised at the number of different methods that have
been invented just to handle that pesky 0.5 fraction.  

If you are doing some serious math, you'll need to read up on all of
that.

James Graves