Задать вопрос
@ArasI

Как сохранять и сокращать ОЧЕНЬ большие числа типа int?

Делаю кликер на андроид на Unity 2020, там большое получается число (в коде money). Число в ulong, а тем более в int не помещается, как сохранять числа с (к примеру) 100 нулями? У меня число сокращается, т.е. 100 000 отображаются как 100К. Также число сохраняется в PlayerPrefs. Мне надо как-нибудь сохранить огромное число (хорошо было-бы сохранить в 1 переменной чтобы не менять код с сокращением числа, но если по-другому нельзя, то подойдёт и в нескольких переменных). Как это сделать?

Код, в котором число (money):
public class Game : MonoBehaviour
{

    public Text moneyText;
 

    public int money;

    void Start()
    {
        money = PlayerPrefs.GetInt("money");

    void Update()
    {
        moneyText.text = FormatNumbers.formatNumber(money);
    }

    public void Click()
    {
       money++;
       PlayerPrefs.SetInt("money", money);
    }
}

Код с сокращением числа:

public static class FormatNumbers
{
    public static string[] format_name = new[]
    {
        "", "K", "M", "t", "q", "Q", "s", "S", "o", "n", "d", "U", "D", "T", "Qt", "Qd", "Sd", "St", "O", "N", "v", "c"
    };

    public static string formatNumber(float num)
    {
        if (num == 0)
            return "0";

        int i = 0;
        while(i+1 < format_name.Length && num >= 1000f)
        {
            num /= 1000f;
            i++;
        }
        return num.ToString("#.##") + format_name[i];
    }
    
}
  • Вопрос задан
  • 690 просмотров
Подписаться 2 Средний Комментировать
Ответ пользователя freeExec К ответам на вопрос (2)
freeExec
@freeExec
Участник OpenStreetMap
Ну т.е. по сути игрок видит только числа от 0 до 1000, и жалуешься что long не хватает, а тут 10 бит за глаза.
Но если вы так за свой код переживаете, используйте BigInteger
Ответ написан
Комментировать