显示大双打时变成负数的问题

时间:2019-04-16 05:24:38

标签: c# unity3d

我正在尝试制作一个Clicker游戏。目前,我正在使用双打来显示大量数字。但是,当我达到一兆以上的任何数字时,它就会达到-1354万亿美元左右。下面显示的代码是用于填充大量数字的代码,例如“ ___百万”或“ ____十亿”,但一旦超过9900亿,则显示“ -1354万亿”。它继续发挥着万亿美元的作用,因为您可以用看似零钱的东西购买物品,但显示方式完全错误。

我尝试将double更改为int,long和float,所有这些都会导致相同的问题。我还尝试了更大的数字,但它们甚至在系统中都无法使用。看来9999亿是极限,它可以使所有的地狱变得松散。

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万亿”。

0 个答案:

没有答案