2012-03-05 5 views
1

現在、私は問題があり、それが私を狂ってしまいます。Android:floatは計算されていません

あなたが知っているパーセンテージの計算方法はわかります。 それは(p/pMax)* 100ですね。

これはまさに私がコードで書いたものです。 しかし、私はいつもこの計算の結果として0.0を得ています。 明確にするためにスクリーンショットをご覧ください。

eclipse screenshot

あなたはfloat型変数にPRGを見ることができるように(1944分の252)計算の結果として0.0なり* 100

私が間違って何をしているのですか? 必要に応じて、変数の初期化をここに入れることができます。

ありがとうございます!

+0

progressとprogressMaxはどちらもintですか? – Blackbelt

答えて

7

252/1944は、結果をダブルに入れても、int除算として扱われます。 ちょうどダブルスとして、それらを投げ、変数の場合、252.0/1944.0

を試してみたり浮い (例えば(ダブル)A /(ダブル)b)の

LE:他の人が持っているように私は、それを明確にすべきです操作の2つの変数の1つをfloat/doubleとしてキャストするだけでよいことに注意してください。

+0

ありがとう、私はそれを考えなかった! – Maksl5

2

pおよびpMaxは、おそらく整数です。

これは、結果よりもpMax> p(おそらく)が0のときに整数/整数になります。 次に、0.0に100を掛けて0.0を返します。

解決方法:pまたはpMaxを浮動または2倍にキャストします。

4

pおよびpMaxはint型である必要があります。したがって、整数除算を実行します。浮動小数点変数の1つをキャスト:(p/(float) pMax)*100

+0

ありがとう!上記のように、これは問題を解決しました。 – Maksl5

関連する問題