我试图找到一个大于一个非常大的数字的最小整数(例如,exp(5000000))。我该怎么做呢?如果不是以编程方式(因为这在MATLAB或我的计算器中评估为无穷大或溢出),那么在数学上? (已经尝试过exp(floor(exp(5000 * 1024))))但是这只会给无穷大。)
答案 0 :(得分:3)
您希望某些内容提供变量精度算术,例如Symbolic Math Toolbox和ceiling 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;
}