我想知道Lua如何使用该tostring()函数处理数字到字符串转换.
它将转换为int(作为字符串),如果数字是圆的(即if number == (int) number)或是否总是输出一个真实的(如字符串)10.0?
我需要模仿Lua tostring在C中的确切行为,而不使用Lua C API,因为在这种情况下,我没有使用lua_State.
Yu *_*Hao 26
在Lua 5.2或更早版本,都tostring(10)和tostring(10.0)结果作为字符串"10".
在Lua 5.3中,这已经改变了:
print(tostring(10)) -- "10"
print(tostring(10.0)) -- "10.0"
Run Code Online (Sandbox Code Playgroud)
那是因为Lua 5.3引入了整数子类型.从语言的变化:
将float转换为字符串现在
.0为结果添加后缀,如果它看起来像一个整数.(例如,浮动2.0将打印为2.0,而不是2.)当您需要特定的数字格式时,应始终使用显式格式.
Lua 按如下方式转换数字:
print(tostring(10)) => "10"
print(tostring(10.0)) => "10.0"
print(tostring(10.1)) => "10.1"
Run Code Online (Sandbox Code Playgroud)
如果你想使用它们,有一个小型在线解析器,用于执行如下简单命令: http: //www.lua.org/cgi-bin/demo 这使用 Lua 5.3.1
编辑 我必须支持叶戈尔的评论,它取决于版本。我在我的系统上本地运行了这个:
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> print(tostring(10))
10
> print(tostring(10.0))
10
Run Code Online (Sandbox Code Playgroud)