Разделить BigInteger, считать цифры? - PullRequest
1 голос
/ 02 ноября 2011

Есть ли шанс, что вы сможете придумать эффективный способ разделить BigInteger пополам, то есть, если число 12345678, оно будет разделено на 1234? Я думал, что смогу превратить его в строку и использовать подстроку, но я не уверен, что это будет самый быстрый способ сделать это.

Вы также знаете, как посчитать количество цифр в BigInteger? Я знаю, что вы можете сделать bitLength и bitCount, но я думаю, что они в двух дополнениях. Я пытаюсь отследить, где я их разделил?

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011
    BigInteger bi = new BigInteger("12345678");
    String numStr = bi.toString();
    System.out.println(numStr.substring(0,numStr.length()/2));
1 голос
/ 02 ноября 2011

Преобразование в строку - это, вероятно, ваша лучшая ставка, потому что звучит так, будто вы ищете «текстовую» половину точки и длину, а это не то, что обеспечивают «числовые» представления.

1 голос
/ 02 ноября 2011

Некоторые спрашивали, как вычислить количество десятичных цифр в двоичном числе здесь: https://math.stackexchange.com/questions/3987/how-to-calculate-the-number-of-decimal-digits-for-a-binary-number

Похоже, это не тривиально. Поэтому весьма вероятно, что вам придется конвертировать в строку и работать оттуда.

...