次の実行時に奇妙なエラーが発生することに興味がありました。
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
割る前に を発生させても問題ありません。3
1
時にはそれは単なる基本的な数学です... :)