所以我对我尝试过多少次感到有点沮丧。 我在这里使用#/ 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.当为假时,它会按照预期的方式进行,这取决于计数。
答案 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
值,这将执行双重除法,保留小数部分。