我正在尝试制作一个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万亿”。