次の実行時に奇妙なエラーが発生することに興味がありました。
int width = 300;
int var1 = width/3;
int var2 = width * 1/3;
int var3 = width * 2/3;
int var4 = width*(1/3);
int var5 = width * (int)(1/3);
int var6 = (int)(width*(1/3));
System.out.println("Var1: " + var1);
System.out.println("Var2: " + var2);
System.out.println("Var3: " + var3);
System.out.println("Var4: " + var4);
System.out.println("Var5: " + var5);
System.out.println("Var6: " + var6);
出力は次のとおりです。
Var1: 100
Var2: 100
Var3: 200
Var4: 0
Var5: 0
Var6: 0
最後の 3 つの操作で が返されるのはなぜ0ですか? の周りのかっこ1/3は、計算の実行方法によって何かが変わるように見えますが、それを にケース化しようとしてもint、出力は変わりませんでした。
私はとを使用していBlueJ IDEますJava version 1.7.0_17
編集
私は答えを見つけました。作業順序によるものです。parens除算が最初に発生する原因であり、1 int/3 または 2/3 は常に に等しくなり0ます。数が よりも大きいため、すべてでwidth * 2割る前に を発生させても問題ありません。31
時にはそれは単なる基本的な数学です... :)