2012-04-26 9 views
-1

私はいくつかの基本的な計算をしようとしており、それは0としてポップアップし続けます。私はそれがintであることと関係があると確信していますが、私はそれを回避する方法を知らない。私は整数を使用する必要がありますが、それらの整数に到達する数学では小数点を使用します。どうすればいいのですか?なぜint exp1 = 14/20 * 100ですか; javaで '0'と等しいですか?

+3

良い領主を試してみてください。 – duffymo

+0

弱い型の言語ではない@duffymo;) – dtech

+0

本当に? JavaScriptの例を投稿してください。私はあなたがそれらを分割するときに2つの整数がこのように動作することを確信しています。 – duffymo

答えて

2

これはブラックベリーにとって特別なことではありませんが、これは標準的な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 
8

これは整数除算です。

整数でない結果を得るには、代わりにdoubleを使用してください。

1

あなたは14 * 100/20に変更することができます。

I.e.操作の順序を変更する(14/20は0)

-1

を変更。

はない再び....整数の除算は、すべての言語でこのように動作する、

double exp1 = 14/20.0*100; 
+1

'14/20'は0になるので、これはまだ動作しません – dtech

+0

どのようにしてdoubleをintとしてキャストして丸めますか? –

+0

すなわち。 0.65 * 10 = 6.5ただしintにキャストして7に丸めます –

関連する問題