4
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)上测试。

4

1 回答 1

4

io.read("*n")总是返回一个浮点数。所以那里没有惊喜。

如果您需要将整数转换为浮点数,请添加0.0

于 2014-04-03T13:30:28.310 回答