Наименьшее целое число больше, чем очень большое число - PullRequest
0 голосов
/ 28 октября 2011

Я пытаюсь найти наименьшее целое число, превышающее очень большое число (например, exp (5000000)).Как бы я поступил так?Если не программно (потому что это оценивает бесконечность или переполнение в MATLAB или моем калькуляторе), то математически?(Уже пробовал exp (floor (log (exp (5000 * 1024)))), но это просто даст бесконечность).

Ответы [ 4 ]

3 голосов
/ 28 октября 2011

Требуется что-то, что обеспечивает арифметику с переменной точностью, например, Symbolic Math Toolbox и потолочная функция .

2 голосов
/ 30 октября 2011

Если вы хотите вычислить все цифры большого числа, возможно, самое простое решение - использовать Maple или Mathematica.Если вам нужно что-то простое и бесплатное, вы можете использовать Wolfram Alpha .

Например:

0 голосов
/ 28 октября 2011

Как Клас Саис. Если вы целое число i N , то наименьшее большее целое число будет N + 1 . Чтобы вычислить это, используя, например, C, вы могли бы написать функцию типа

unsigned long smallestLargerInteger(unsigned long startNum) {
  return startNum +1;
}

Чтобы убедиться, что вы не переполняете long , у вас может быть что-то вроде

#define __HALF_MAX_SIGNED(type) ((type)1 << (sizeof(type)*8-2))
#define __MAX_SIGNED(type) (__HALF_MAX_SIGNED(type) - 1 + __HALF_MAX_SIGNED(type))
#define __MIN_SIGNED(type) (-1 - __MAX_SIGNED(type))

#define __MIN(type) ((type)-1 < 1?__MIN_SIGNED(type):(type)0)
#define __MAX(type) ((type)~__MIN(type))

unsigned long smallestLargerInteger(unsigned long startNum) {
  if(__MAX(long) == startNum) {
    // handle overflow error messaging here
  }

  return startNum +1;
}
0 голосов
/ 28 октября 2011

Вам нужно использовать библиотеку, которая обрабатывает большие числа.

Кажется, моя карма в Google указывает на Symbolic Math Toolbox ,

...