私の例では、X はすでに長く、Y も長いです。私はその時キャストしていません。
私は本当に3乗された数で割りたいだけです。(ネイティブ ライブラリを使用)
これらの数字は非常に大きいです。それらをフロートに変換して実行すると、その値は無限大です...
System.out.println(formatter.format("%20d", (X/(Y*Y*Y))));
Y は非常に大きな数値であり、0 ではありません。X はミリ秒単位の時間の測定値です。
この質問が閉じられない場合は、しばらくして正確なコードを投稿します...今すぐアクセスできません。
コンテキスト: O(n ^ 3)の大きな表記計算を扱っています。
エラー:「スレッド「メイン」での例外 java.lang.ArithmeticException: / by zero」
答え:
あなたが本当に引用符を意味していないと仮定すると、考えられる理由は、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))"));
}