这可能是一个简单的问题,但搜索没有找到类似的问题.
#运算符查找字符串的长度,其中包括很好的.但是由于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"的长度(数值)
或者,
length = math.floor(math.log10(number)+1)
Run Code Online (Sandbox Code Playgroud)
不过要小心,这只适用于 n > 0!
可能有十几种方法可以做到这一点.简单的方法是使用tostring丹提及.您还可以连接一个空字符串,例如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
Run Code Online (Sandbox Code Playgroud)