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")));

当为真时,结果总是为 0。当为假时,它会按照预期的方式进行,即根据计数减去一个数量。

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")));

诀窍是除以100.0(double),而不是100(int)

于 2012-12-31T01:01:49.543 回答
1

假设getInt确实返回一个整数,看起来你正在做整数除法,给你0.

除以代替:getConfig().getInt("fine")_100d100

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

将“d”添加到 100 使 100 成为一个double值,这将执行双除法,保留小数部分。

于 2012-12-31T01:05:41.070 回答