BigInteger.valueOf () для очень больших чисел? - PullRequest
3 голосов
/ 28 августа 2009

Как лучше всего преобразовать 50-значную строку в BigInteger в Java? У него нет метода valueOf (String), и я не могу преобразовать его в Long, потому что он слишком маленький.

Ответы [ 4 ]

14 голосов
/ 28 августа 2009

Имеется конструктор BigInteger(String): -)

String S = "12345678901234567890123456789012345678901234567890";
BigInteger bi = new BigInteger(S);
2 голосов
/ 28 августа 2009

Как насчет ...

BigInteger bi = new BigInteger(my50DigitString);

Все эти методы Xxx.valueOf () являются альтернативами конструкторам, поскольку они позволяют возвращать общие кэшированные копии. Конструкторы по определению каждый раз возвращают новый экземпляр. Так что valueOf () - хорошая оптимизация, но разработчикам, видимо, не было интересно предоставлять метод BigInteger.valueOf (String). В этом случае вам придется использовать один из конструкторов.

1 голос
/ 28 августа 2009

Вы пробовали

BigInteger i = new BigInteger(s);
1 голос
/ 28 августа 2009

У BigInteger есть конструктор, который принимает строку.

...