Найти длину строки числа Lua? - PullRequest
3 голосов
/ 13 сентября 2011

Простой вопрос здесь, возможно, но поиск не нашел аналогичного вопроса.

Оператор # находит длину строки, помимо всего прочего, отличной. Но когда 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' (числовое значение)

Ответы [ 4 ]

13 голосов
/ 13 сентября 2011

почему бы не использовать tostring(F) для преобразования F в строку?

5 голосов
/ 13 сентября 2011

Вероятно, существует дюжина способов сделать это.Самый простой способ - использовать 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
3 голосов
/ 21 апреля 2013

С другой стороны,

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

Осторожно, это будет работать только тогда, когда n> 0!

0 голосов
/ 15 мая 2016

Разве while tostring(F).len < 10 do не полезно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...