2012-03-27 10 views
3

私は2つの整数値xとtotalを持っています。私はxの合計を整数で求めようとしています。これは私が今やっているところです:Java:整数のパーセンテージを取得しようとすると、どのように丸めますか?

パーセント=(int)((x * 100)/ total);

パーセントは整数でなければなりません。私がこれをするとき、常に小数点を丸めます。パーセントを整数として計算する簡単な方法はありますか?小数点が.5以上の場合は切り上げますか?

答えて

13

Math.round(x * 100.0/total)を使用してください。しかし、これは長いので、intへのシンプルなキャストが必要になることに注意してください。

丸め前に浮動小数点演算を使用するように100.0を強制します。

+0

intを返すオーバーロードされたメソッドがあります。だからキャストは絶対に必要なわけではありません。 –

+0

@DhariniChandrasekaran浮動小数点数を渡すとintが返されると思いますか?私がそれを書いたやり方では、それは二重に渡り、長く戻るでしょう。 – joshuahealy

+0

@Churk実際には、x、100、totalがすべてintなので、私の答えは編集されているので、算術演算はすべて整数になり、roundへの呼び出しは時間の無駄でした。浮動小数点演算を使用するように100.0に変更し、その説明を追加しました。 – joshuahealy

1

理由だけではなく、Javaの標準数学ライブラリを使用しMath.round(100.0/total * x);

+0

+1の前にあったので、 –

+1

この答えは、 'x'と' total'が両方とも整数なので問題を解決しません。この式は整数演算を使用して評価され、ラウンド関数に渡される前に「丸め」されます。 – joshuahealy

2

を使用していません。

percentage = Math.round(*your expression here*); 
1

を使用Math.round((x*100)/total);

3
(int)Math.round(100.0/total * x); 

動作するはずです。

1

あなたは正の値(infitityにラウンド)

percentage = (int)(x * 100.0/total + 0.5); 
これは恐らくMath.roundを使用するよりも高速です

が、おそらくとして明確ではないために0.5を追加することができます。

BTW:100.0/total * xは、評価の順序が浮動小数点の結果を変更する可能性があるため、x * 100.0/totalと同じ結果が得られない場合があります。

0

最も簡単な方法は -

質問10進数の値を切り上げする方法(例:int型のn = 4.57)

回答:恐らくMath.round(N);

出力:5。

+0

質問には部分的にしか答えません。あなたは完全な答えを形作るために精緻化することができますか? –

+0

これも正しくありません。質問をより慎重に読んで、それに正しく答える多くの既存の回答をチェックしてください。 –

関連する問題