local formatted = string.format(
"%.2f %%",
UnitXP('player') / UnitXPMax('player') * 100
)
Это стандартный способ Lua, который также должен сработать для вас. Если бы WoW не удалил эту функцию, это было бы глупо.
Обратите внимание, что type(formatted)
- это строка, а не число.
string.format
, как описано в руководстве, принимает формат строка в качестве первого аргумента, за которой следует ряд значений, которые вы хотите объединить в строку формата.
Строка формата обычно обрабатывается буквально, за исключением специальных токенов, начинающихся с %
. Количество дополнительных аргументов должно быть равно количеству этих токенов в строке формата.
В приведенном выше примере %f
означает «вставить сюда поплавок»; например, string.format("hello %f world", 5.1")
вернет "hello 5.1 world". Добавляя материал после %
и перед f
, вы можете сказать, как именно его отформатировать.
Вот пример использования всех параметров: string.format("%x6.2f", 2.264)
Слева направо:
%
знаменует начало
x
указывает ему заполнить вправо с помощью x s
6
говорит, что все должно состоять из 5 символов
.2
сообщает ему округлить (или дополнить нулями) до 2 знаков после запятой
Итак, результат будет xx2.26
Наконец, поскольку %
имеет особое значение в строке формата, если вам нужен буквальный%, вы должны вместо этого написать %%
.
Таким образом, "% .2f %%" означает:
Число с плавающей запятой, округленное или дополненное до 2 десятичных знаков, за которым следует пробел и знак процента. Второй аргумент format
должен быть числом, иначе функция выдаст ошибку.
person
DarkWiiPlayer
schedule
16.09.2019