在我的示例中,X 已经很长,Y 也很长。那时我不投。
我真的只想除以一个立方数。(使用本机库)
这些数字非常大。如果我将它们转换为浮点数并执行它,它的值是无限的......
System.out.println(formatter.format("%20d", (X/(Y*Y*Y))));
Y 是一个非常大的数字,它不是 0。X 是以毫秒为单位的时间度量。
如果这个问题没有关闭,我将在短时间内发布确切的代码......我现在无法访问它。
上下文:我正在处理 O(n^3) 的大符号计算。
错误: “线程“主”java.lang.ArithmeticException 中的异常:/ 为零”
答案:
假设你不是真的指引号,可能的原因是 Y * Y * Y 大于 2 ^ 31。它溢出,下半部分为 0。我相信这只会发生在 Y 是 2 的倍数时^11 (2048) - 但我不确定*
- 对我来说就是这种情况,Y 是 2048 的倍数,希望这有助于尝试找到解决方案。
// Algorithm 3
for( int n = 524288; n <= 5000000; n *= 2 ){
int alg = 3;
long timing;
maxSum = maxSubSum3( a );
timing = getTimingInfo( n, alg );
System.out.println(fmt.format("%20s %20d %20d %20d %20d %20s%n", "Alg. 3", n, timing, timing, timing/(n*n), "time/(n*log(n))"));
}