[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Issue with bit shift in Lua 5.4 Work releases
- From: Dirk Laurie <dirk.laurie@...>
- Date: Fri, 6 Jul 2018 17:52:11 +0200
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.