Форматирование чисел

Ammonite

Участник
Регистрация
20 Июл 2023
Сообщения
2
Добрый вечер, у меня объявилась нужда в форматировании чисел. Мне нужно выводить в скорборд, допустим, монеты, если монет от 1000 до 999999, то делить на 1000 и в конце ставить "К" и тд, крч, все ведь это понимают (1700 = 1,7К, 1930000 = 1,93М и тд). Так вот, можно это как-то автоматизировать или надо для каждого обозначения вот так писать (если больше&меньше, делить, объединить)? И вообще, так надо делать?
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Добрый вечер, у меня объявилась нужда в форматировании чисел. Мне нужно выводить в скорборд, допустим, монеты, если монет от 1000 до 999999, то делить на 1000 и в конце ставить "К" и тд, крч, все ведь это понимают (1700 = 1,7К, 1930000 = 1,93М и тд). Так вот, можно это как-то автоматизировать или надо для каждого обозначения вот так писать (если больше&меньше, делить, объединить)? И вообще, так надо делать?
Ну... Циклом? Циклом ты каждый раз делишь число на 1000 пока полученное число не будет равно < 1000. То есть, у нас есть число 4.500.000. Делим на тысячу - получаем 4500. Оно больше 100, значит прогоняем цикл еще раз: получаем 4.5 с двумя к(Два раза делили), оно меньше 1000(Числа, нужного для добавления "к") - значит останавливаем цикл. Как можно добавлять к... Как на счет сделать длинную строку типа "ккккккккк" и каждую итерацию цикла определенным образом обрезать строку, оставляя нужное количество к? То есть, допустим у нас строка с 10 к, сначало мы обрезаем ее от 0 до 10(Полностью), потом от 1 до 10(Вроде это обрежет все, кроме первой буквы) и так далее. Не уверен, что буквы будут работать. Можешь еще попробовать массивом...
 

TimePlay

Новичок
Регистрация
3 Май 2023
Сообщения
90
ну есть типа блок если значение обсидианский
1689876464519.png
там действие сравнить числа
1689876483119.png
и переключаешь больше или равно 1000 меньше или равно 999999
1689876604556.png
если надо тебе ещё миллионы, то ставишь иначе и там проверяешь Если монет больше или равно 1000000 то делишь на 1000000 или сколько там надо
ну а дальше после деления железный блок объединяешь текст просто отдельную несохраняемую переменную типа %player%_scoreboard_money делаешь на (%player%_scoreboard_money, "К") или (%player%_scoreboard_money, "М")

если там цикл нужен то типа

Цикл > Выбрать всех игроков > Игровое действие (Удалить очки в скорборде) (%selected%_scoreboard, пусто, числоКудаСтавить) > Установить переменную (%selected%_scoreboard_money = %selected%_money)
> Выбрать игроков по условию (Сравнить числа (%selected%_money >= 1000 и <= 999999)) > Установить поделить (%selected%_scoreboard_money, %selected%_money, 1000) > Объединить текст (%selected%_scoreboard_money, "К")
> Выбрать игроков по условию (Сравнить числа (%selected%_money >= 1000000 и <= 999999999)) > Установить поделить (%selected%_scoreboard_money, %selected%_money, 1000000) > Объединить текст (%selected%_scoreboard_money, "М")
> Выбрать всех игроков > Выставить очки в скорборде (%selected%_scoreboard, %selected%_scoreboard_money, числоКудаСтавить)
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
ну есть типа блок если значение обсидианский
Посмотреть вложение 1877
там действие сравнить числа
Посмотреть вложение 1878
и переключаешь больше или равно 1000 меньше или равно 999999
Посмотреть вложение 1879
если надо тебе ещё миллионы, то ставишь иначе и там проверяешь Если монет больше или равно 1000000 то делишь на 1000000 или сколько там надо
ну а дальше после деления железный блок объединяешь текст просто отдельную несохраняемую переменную типа %player%_scoreboard_money делаешь на (%player%_scoreboard_money, "К") или (%player%_scoreboard_money, "М")

если там цикл нужен то типа

Цикл > Выбрать всех игроков > Игровое действие (Удалить очки в скорборде) (%selected%_scoreboard, пусто, числоКудаСтавить) > Установить переменную (%selected%_scoreboard_money = %selected%_money)
> Выбрать игроков по условию (Сравнить числа (%selected%_money >= 1000 и <= 999999)) > Установить поделить (%selected%_scoreboard_money, %selected%_money, 1000) > Объединить текст (%selected%_scoreboard_money, "К")
> Выбрать игроков по условию (Сравнить числа (%selected%_money >= 1000000 и <= 999999999)) > Установить поделить (%selected%_scoreboard_money, %selected%_money, 1000000) > Объединить текст (%selected%_scoreboard_money, "М")
> Выбрать всех игроков > Выставить очки в скорборде (%selected%_scoreboard, %selected%_scoreboard_money, числоКудаСтавить)
он же написал, что автоматизировать процесс, а не ставить кучу "Если"
 
Сверху