如何在Lua 5.3中保持整数浮点数

时间:2014-04-03 08:31:25

标签: lua lua-5.3

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)上进行了测试。

1 个答案:

答案 0 :(得分:4)

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

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