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


Find the string length of a Lua number?

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

#运算符可以找到一个字符串的长度,其中很大的一个。 但是随着Lua是动态类型的,因此没有转换运算符,一个人如何将数字键入为字符串以确定其长度?

例如,假设我要在一个格式化的表格中打印从1到9的阶乘。

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

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


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


或者,

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

不过请注意,这仅在n> 0的情况下有效!


大概有十二种方法可以做到这一点。 最简单的方法是使用Dan提到的tostring。 您还可以连接一个空字符串,例如 F_str=""..F以获得F_str作为字符串表示形式。 但是,由于您尝试输出格式化的字符串,请使用string.format方法为您完成所有艰苦的工作:

1
2
3
4
5
6
i,F = 1,1
while i<10 do
    print(string.format("%01d! == %010d", i, F))
    i=i+1
    F=F*i
end


while tostring(F).len < 10 do有用吗?