Lua - 字符串行为的数字

Vir*_*721 13 c lua tostring

我想知道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.)当您需要特定的数字格式时,应始终使用显式格式.


cod*_*nny 6

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)