Lua - 数字和字符串的处理方式
2016-3-16 9:36:25
收藏:0
阅读:186
评论:4
我想了解 Lua 如何使用 tostring() 函数处理数字和字符串之间的转换。
如果数字是整数(即 number == (int) number),它会将其转换为整数(作为字符串)吗?还是始终将其输出为实数(作为字符串),例如 10.0?
我需要在 C 中模仿 Lua 的 tostring 的确切行为,但不能使用 Lua C API,因为在这种情况下,我没有使用 lua_State。
点赞
用户1009479
在 Lua 5.2 或更早的版本中,tostring(10) 和 tostring(10.0) 都将结果转换为字符串 "10"。
在 Lua 5.3 中,这种情况已经改变了:
print(tostring(10)) -- "10"
print(tostring(10.0)) -- "10.0"
这是因为 Lua 5.3 引入了整数子类型。从语言的变化中可以了解到:
现在将浮点数转换为字符串时,如果看起来像整数,则在结果中添加
.0后缀。 (例如,浮点数2.0将被打印为2.0,而不是2。) 当你需要特定格式的数字时应始终使用显式格式。
2016-03-16 09:29:19
用户3979429
在 Lua 5.3 中,由于整数类型的存在,tostring 在浮点数上(即使其数字值等同于整数)会添加一个 ".0" 后缀,但这并不意味着你不能缩短它!
local str = tostring(n)
if str:sub(-2) == ".0" then
str = str:sub(1,-3)
end
2016-03-16 17:01:54
用户2262111
如果您正在使用5.3.4并且需要快速修复,请使用math.floor-将其强制转换为int数字。这比@ warspyking的答案效率更高,但缺少了大量代码的酷度。
>tostring(math.floor(54.0))
54
>tostring(54.0)
54.0
>type(math.floor(54.0))
integer
>type(54.0)
number
2017-12-21 04:56:08
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
Lua 将数字直接转换为字符串:
print(tostring(10)) => "10" print(tostring(10.0)) => "10.0" print(tostring(10.1)) => "10.1"如果你想试一下,可以使用一个简单的在线解析器来执行这些命令:http://www.lua.org/cgi-bin/demo 这个解析器使用 Lua 5.3.1。
编辑 我必须支持 Egor 的评论,这与版本有关。 我在本地系统上运行了这个:
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > print(tostring(10)) 10 > print(tostring(10.0)) 10