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

Rob*_*err 3 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
Run Code Online (Sandbox Code Playgroud)

错误:尝试获取全局"F"的长度(数值)

Dan*_* D. 13

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

  • 虽然这确实有效,但 HennyH 给出了正确的答案。当有快速公式时,没有理由进行大量字符串操作 (2认同)

Hen*_*nyH 6

或者,

length = math.floor(math.log10(number)+1)
Run Code Online (Sandbox Code Playgroud)

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


BMi*_*tch 5

可能有十几种方法可以做到这一点.简单的方法是使用tostring丹提及.您还可以连接一个空字符串,例如F_str=""..FF_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
Run Code Online (Sandbox Code Playgroud)