lua-users home
lua-l archive

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


2018-07-06 17:37 GMT+02:00 Jasper Klein <jasper@klein.re>:
> Hello lua-l!
>
> This is my first post here and I'm not familiar with mailing lists.
> With this post I want to bring up an issue that I've found in Lua 5.4 work
> releases.
>
> The following three lines runs without errors in Lua 5.3.
>
> local foo = 13.37
> local bar = foo // 1
> type( bar <<  8 )
>
> The shift on the third line fails with Lua 5.4 with the following error:
> "number (local 'bar') has no integer representation".
>
> It still fails with the error "attempt to perform bitwise operation on a nil
> value (local 'bar')" when 'bar' is explicit converted to an integer.
>
> local foo = 13.37
> local bar = math.tointeger( foo // 1 )
> type( bar <<  8 )
>
> Is this a bug or did I use the wrong method?

The manual says: rounds the quotient towards minus infinity, that is,
the floor of the division of its operands, which does not happen, so
it is a bug.

It is interesting, though, that the metamethod-powered version:

bar = "13.37"//1

does give 13.