Проблема с большими двойными значениями, которые становятся отрицательными при отображении - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь сделать игру кликером в ООН. В настоящее время я использую двойники как способ показа больших чисел. Однако, когда я получаю какие-либо числа, превышающие триллион, это достигает -1354 триллионов или что-то в этом роде. Код, показанный ниже, представляет собой код для заполнения больших чисел как «___ Миллион» или «____ миллиардов», но как только он пройдет 999 миллиардов, будет показано «-1354 триллиона». Он продолжает действовать как триллион долларов, так как вы можете покупать предметы за явно отрицательные деньги, но на дисплее все не так.

Я попытался изменить double на int, long и float, и все они приводят к одной и той же проблеме. Я также пробовал еще большие числа, но они даже не работают в системе. Похоже, что 999 миллиардов - это предел, прежде чем он полностью раскроет ад.

public static string largeWholeNumbers(double number)
{
    int numOfZeros = (number.ToString()).Length; //Gets Length of number
    int zeroSets = (int)Mathf.Floor(numOfZeros / 3.001f); //Divides it by a little over 3 and floors it 
    double numDisplay = number/(power(10, ((2 *zeroSets) + (zeroSets - 1)))); //Get the thing infront of the illion (IE 134, 6 million)

    //Defines
    string numberName = "";
    int hugeNumberSet = 0;
    int hugeNumberStart = 0;
    int hugeNumberStartIndex = 0;
    int hugeNumberEnd = 0;

    if (zeroSets < 11)
    {
        zeroSets -= 2;
        numberName = numberEndings.wholeNumEndings[zeroSets];
    }

    if (zeroSets > 10)
    {
        hugeNumberSet = (int)Mathf.Floor((zeroSets - 1)/10); //Divides it by 10 to get 10, 20, 30 etc
        hugeNumberEnd = hugeNumberSet - 1;
        hugeNumberStart = zeroSets - (hugeNumberSet * 10); //Example zeroSet = 12, this = 2
        hugeNumberStartIndex = hugeNumberStart - 1; 
        if (hugeNumberStart < 1)
        {
            numberName = numberEndings.endNumEndings[hugeNumberEnd];
        }

        if (hugeNumberStart >= 1)
        {
            numberName = numberEndings.endNumEndings[hugeNumberEnd] + numberEndings.beginNumEndings[hugeNumberStartIndex];
        }
    }

    return numDisplay.ToString() + " " + numberName;
}

Ожидаемые результаты будут показывать число в интерфейсе как "1 триллион", однако оно показывает как "-1354 триллиона".

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