Я хочу разбить значение BigInteger (111111222222333333444444555555) на массив из 5 элементов (в основном разбивая большое количество на разные монеты). Они разделяются обратным отсчетом и подстрокой каждые 6 чисел. Я строю это для игры на единство. Это означает, что тестовый массив после запуска функции должен быть массивом {111111,222222,333333,444444,555555}.
В моем тесте я вызываю ToRegularCoins(111111222222333333444444555555, test);
, где test - массив int [5] .
Функция выглядит следующим образом:
public void ToRegularCoins(BigInteger coinsValue, int[] targetArray)
{
string coinsValueString = coinsValue.ToString();
string[] coinsValueStringArray = new string[5];
for (int i = 0; i < 5; i++)
{
try
{
coinsValueStringArray[i] = coinsValueString.Substring(coinsValueString.Length - 6);
coinsValueString = coinsValueString.Remove(coinsValueString.Length - 6, 6);
Debug.Log("Index: " + i + "coinsValueString: " + coinsValueString);
}
catch(ArgumentOutOfRangeException)
{
Debug.Log("Exception in Index: " + i);
coinsValueStringArray[i] = coinsValueString;
coinsValueString = "";
}
try
{
targetArray[i] = int.Parse(coinsValueStringArray[i]); // Turn string into Int at Array's index
}
catch(FormatException)
{
Debug.Log("No Coins of Index: " + i);
}
}
}
Запуская мой скрипт, я получаю XY.cs (32,24): error CS1021: Integral constant is too big
Как исправить эту ошибку? Может быть, я делаю это сложнее, чем следовало бы?