如何找到 Lua 数字的字符串长度?

这是一个简单的问题,但搜索并没有找到类似的问题。

运算符可以找到字符串的长度,还有其他功能。 但由于Lua是动态类型的,因此没有转换运算符,如何将数字类型转换为字符串类型以确定其长度?

例如,假设我想以格式化表格的形式打印1到9的阶乘。

i,F = 1,1
while i<10 do
    print(i.."! == "..string.rep("0",10-#F)..F)
    i=i+1
    F=F*i
end

错误:尝试获取全局变量“F”的长度(一个数字值)

原文链接 https://stackoverflow.com/questions/7393869

点赞
stackoverflow用户388787
stackoverflow用户388787

为什么不使用 tostring(F)F 转换为字符串?

2011-09-12 20:59:02
stackoverflow用户596285
stackoverflow用户596285

有许多种方法可以做到这一点。一个简单的方法是使用 tostring(Dan 也提到了)。你还可以使用空字符串连接,例如 F_str=""..F 来获取 F_str 的字符串表示。但由于您想要输出格式化的字符串,因此请使用 string.format 方法为您完成所有的繁重工作:

i,F = 1,1
while i<10 do
    print(string.format("%01d! == %010d", i, F))
    i=i+1
    F=F*i
end
2011-09-12 21:05:31
stackoverflow用户2303714
stackoverflow用户2303714

另外,

length = math.floor(math.log10(number)+1)

不过要小心,这只适用于 n > 0!

2013-04-21 07:08:44
stackoverflow用户6336785
stackoverflow用户6336785

这句话是 Markdown 格式,保留如下:

Isn't while tostring(F).len < 10 do useful?

翻译:

这个表达式 while tostring(F).len < 10 do 很实用,不是吗?

2016-05-15 10:49:58