0

ですから、これを何度も試したことに少し不満を感じています。ここでは#/ 100 =%* Balance = Fineを使用していますが、何らかの理由で常に0になります。これは外部APIを使用することに注意してください。

double fine = (getConfig().getBoolean("fineispercentage") == true ? getConfig().getInt("fine") / 100 * count * econ.getBalance(event.getPlayer().getName()) : econ.getBalance(event.getPlayer().getName()) - (econ.getBalance(event.getPlayer().getName()) - count * getConfig().getInt("fine")));

trueの場合、常に0になります。falseの場合、想定どおりに進みます。つまり、カウントに応じて金額を減算します。

4

3 に答える 3

3

これを試してください(テストされていません):

double fine = (getConfig().getBoolean("fineispercentage") == true ? getConfig().getInt("fine") / 100.0 * count * econ.getBalance(event.getPlayer().getName()) : econ.getBalance(event.getPlayer().getName()) - (econ.getBalance(event.getPlayer().getName()) - count * getConfig().getInt("fine")));

秘訣は、 (int)100.0ではなく(double)で除算することです100

于 2012-12-31T01:01:49.543 に答える
1

実際に整数を返すと仮定するとgetInt、整数除算を行っているように見え、を与えます0

getConfig().getInt("fine")100d代わりに除算100

double fine = (getConfig().getBoolean("fineispercentage") == true ? getConfig().getInt("fine") / 100.0 * count * econ.getBalance(event.getPlayer().getName()) : econ.getBalance(event.getPlayer().getName()) - (econ.getBalance(event.getPlayer().getName()) - count * getConfig().getInt("fine")));
于 2012-12-31T01:02:23.927 に答える
1

getConfig().getInt()を返すと仮定するとint、この Java 部門は次のようになります。

getConfig().getInt("fine) / 100

整数除算を行い、int小数部分を切り捨てる結果を生成するため、「細かい」0-99 の値はすべてゼロになります。修正はこれです:

getConfig().getInt("fine) / 100d

100 に "d" を追加すると、100 が adouble値になり、小数部分を維持しながら二重除算が実行されます。

于 2012-12-31T01:05:41.070 に答える