2つの整数オペランドが動作しないJava divison?

何らかの理由で私の数学はただ0を返します。値は設定されています。

int currentSize = 4079;
int totalSize = 500802;

int percentage = ((currentSize/totalSize) * 100);
progdialog.setProgress(percentage);

パーセンテージは常にパーセンテージに等しい。 どうして?

ベストアンサー

他の人が指摘しているように、この問題は、整数除算が1未満のものを0に変えることになります。これは、100を掛ける前に発生します。操作の順序を変更して、より良いものを得ることができます。

int percentage = currentSize * 100/totalSize;

丸めが心配な場合は、

int percentage = (currentSize * 100 + (totalSize >> 1))/totalSize;

これにより、倍精度または浮動小数点値を扱うことの費用が回避されます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です