私はいくつかの基本的な計算をしようとしており、それは0
としてポップアップし続けます。私はそれがint
であることと関係があると確信していますが、私はそれを回避する方法を知らない。私は整数を使用する必要がありますが、それらの整数に到達する数学では小数点を使用します。どうすればいいのですか?なぜint exp1 = 14/20 * 100ですか; javaで '0'と等しいですか?
答えて
これはブラックベリーにとって特別なことではありませんが、これは標準的なJavaの動作です。
あなたは整数演算をやっているので、これは次のとおりです。
int subexpr1 = 14/20; // 0
int subexpr2 = subexpr1 * 100; // 0
ではなく、二重を使用するか、またはあなたが精度を失っているように、あなたの結果は、int
としてキャストされているため
int expr1 = (int) 14.0/20 * 100; // Very small possibility of rounding errors
int expr2 = 14 * 100/20; // Will ignore fraction parts
これは整数除算です。
整数でない結果を得るには、代わりにdouble
を使用してください。
あなたは14 * 100/20に変更することができます。
I.e.操作の順序を変更する(14/20は0)
を変更。
はない再び....整数の除算は、すべての言語でこのように動作する、
double exp1 = 14/20.0*100;
'14/20'は0になるので、これはまだ動作しません – dtech
どのようにしてdoubleをintとしてキャストして丸めますか? –
すなわち。 0.65 * 10 = 6.5ただしintにキャストして7に丸めます –
良い領主を試してみてください。 – duffymo
弱い型の言語ではない@duffymo;) – dtech
本当に? JavaScriptの例を投稿してください。私はあなたがそれらを分割するときに2つの整数がこのように動作することを確信しています。 – duffymo