数字的百分比

时间:2012-12-31 00:59:29

标签: java

所以我对我尝试过多少次感到有点沮丧。 我在这里使用#/ 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.当为假时,它会按照预期的方式进行,这取决于计数。

3 个答案:

答案 0 :(得分: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(双倍),而不是100(int)

答案 1 :(得分: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")));

答案 2 :(得分:1)

假设getConfig().getInt()返回int,这个java分区:

getConfig().getInt("fine) / 100

将执行整数除法,并产生int结果,这将截断任何小数部分,因此任何“精”0-99的值都将导致零。修复是这样的:

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

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