如何在Lua5.3中保持整数浮动
在Lua5.2中,所有数字都是双精度的。上述代码的输出为:如何在Lua5.3中保持整数浮动,lua,lua-5.3,Lua,Lua 5.3,在Lua5.2中,所有数字都是双精度的。上述代码的输出为: print(2^62) print(2^63) print(2^64) Lua5.3支持整数,并在整数和浮点表示之间进行自动转换。相同的代码输出: 4.6116860184274e+18 9.2233720368548e+18 1.844674407371e+19 我想得到浮点结果2.0^64可以工作,但如果它不是文字,该怎么办 4611686018427387904 -9223372036854775808 0 一种可能的解决方
print(2^62)
print(2^63)
print(2^64)
Lua5.3支持整数,并在整数和浮点表示之间进行自动转换。相同的代码输出:
4.6116860184274e+18
9.2233720368548e+18
1.844674407371e+19
我想得到浮点结果<代码>2.0^64可以工作,但如果它不是文字,该怎么办
4611686018427387904
-9223372036854775808
0
一种可能的解决方案是将数字除以1
:(n/1)^64
,因为在/
除法中,操作数总是转换为浮点,但我正在寻找一种更优雅的解决方案
在上测试。io.read(“*n”)
始终返回浮点值。因此,这并不奇怪
如果您需要将整数转换为浮点数,请向其添加
0.0
。在将数字拆分为浮点数和整数后,Lua中没有更优雅的解决方案:(您必须始终仔细考虑数字的数据类型。编程不再简单…+1最佳“功能”Lua的特点是程序员在学习或使用该语言时需要最少的或不需要特殊的大小写。我认为5.3引入了两种类型的数字,这就破坏了这一点:(这有点失望,我不知道他们是否可以考虑一种新的表示数字的方法,如代码> 42I/CUT>或<代码> 42F。在上面的示例中,更改了“<代码> n=2 < /代码>?@ EIDOLA。我的例子不清楚,我试图说<代码> N< /代码>不是文字,就像用户输入的数字。更新。
local n = io.read("*n") --user input 2
print(n^64)