最小整数大于非常大的数

时间:2011-10-28 03:03:48

标签: math matlab numbers integer

我试图找到一个大于一个非常大的数字的最小整数(例如,exp(5000000))。我该怎么做呢?如果不是以编程方式(因为这在MATLAB或我的计算器中评估为无穷大或溢出),那么在数学上? (已经尝试过exp(floor(exp(5000 * 1024))))但是这只会给无穷大。)

4 个答案:

答案 0 :(得分:3)

您希望某些内容提供变量精度算术,例如Symbolic Math Toolboxceiling function

答案 1 :(得分:2)

如果要计算大数字的所有数字,最简单的解决方案可能是使用Maple或Mathematica。如果您只是想要一些简单且免费的东西,可以使用Wolfram Alpha

例如:

答案 2 :(得分:0)

您需要使用处理大数字的库。

我的谷歌业力似乎指向Symbolic Math Toolbox

答案 3 :(得分:-2)

像Klas sais一样。如果你是整数i N 那么最小的较大整数是 N + 1 。要使用例如C来计算这个,你可以写一个像

这样的函数
unsigned long smallestLargerInteger(unsigned long startNum) {
  return startNum +1;
}

为了确保不会溢出,您可以使用

#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;
}