print(2^62)
print(2^63)
print(2^64)
在 Lua 5.2 中,所有数字都是双精度数。上述代码的输出是:
4.6116860184274e+18
9.2233720368548e+18
1.844674407371e+19
Lua 5.3 支持整数并在整数和浮点表示之间进行自动转换。相同的代码输出:
4611686018427387904
-9223372036854775808
0
我想得到浮动结果。2.0^64
有效,但如果它不是文字怎么办:
local n = io.read("*n") --user input 2
print(n^64)
一种可能的解决方案是将数字除以1
: (n/1)^64
因为在/
除法中,操作数始终转换为浮点数,但我正在寻找更优雅的解决方案。
在Lua 5.3.0 (work2)上测试。