如何在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")  --用户输入 2
print(n^64)

一个可能的解决方法是使用除以 1(n/1)^64,因为在 / 除法中,操作数总是转换为浮点数,但我正在寻找一种更优雅的解决方案。

Lua 5.3.0 (work2) 进行了测试。

点赞
用户107090
用户107090

io.read("*n")总是返回一个浮点数。所以没有什么意外的。

如果你需要将一个整数转换为浮点数,可以加上0.0

2014-04-03 13:30:28