Как мы можем получить длинное значение больше, чем 10 ^ 20 в Java, как предложено в Алгоритмах Седжвика, 4-е издание, с. 778? - PullRequest
0 голосов
/ 16 января 2019

Говоря о реализации Рабина-Карпа, Роберта Седжвика и Кевина Уэйна «Алгоритмы - четвертое издание» , глава 5.3 «Поиск по подстроке» на стр. 778, говорится:

Мы будем использовать значение long больше 10 ^ 20, что делает вероятность того, что случайный ключ хэширует то же значение, что и наш шаблон, меньше 10 ^ (- 20), чрезвычайно малое значение.

Однако 10 ^ 20 представляется больше , чем Long.MAX_VALUE из 9 223 372 036 854 775 807 или 2 ^ 63 - 1 .

Как, следовательно, можно использовать «значение long больше 10 ^ 20»?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

long не может хранить тоже вы правы


  • Они могут:

    float f  = 10000000000000000000f;  
    double d = 10000000000000000000d; 
    BigInteger bigI = new BigInteger("100000000000000000000");
    BigDecimal bigD = new BigDecimal("100000000000000000000");
    
  • Это не может

    byte b  = 10000000000000000000;    
    short s = 10000000000000000000; 
    int i   = 10000000000000000000;    
    long l  = 10000000000000000000L;   
    
0 голосов
/ 16 января 2019

Вы можете использовать BigInteger, если работаете с длинным. Это может быть столько, сколько вы хотите

Вы также можете использовать BigDecimal при работе с числами с плавающей запятой.

...