Java 百分比

Java 百分比,java,Java,所以我有点沮丧,因为我试了多少次。 我在这里使用#/100=%*Balance=Fine,但由于某些原因,结果总是为0。注意,这使用了一个外部API double fine = (getConfig().getBoolean("fineispercentage") == true ? getConfig().getInt("fine") / 100 * count * econ.getBalance(event.getPlayer().getName()) : econ.getBalance(e

所以我有点沮丧,因为我试了多少次。 我在这里使用#/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,则按预期方式执行,即根据计数减去一个量。

尝试以下方法(未测试):

诀窍是除以
100.0
(双精度),而不是
100
(int)

试试这个(未测试):


诀窍是除以
100.0
(双精度),而不是
100
(int)

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

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

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

getConfig().getInt("fine) / 100
将进行整数除法,并生成一个
int
结果,该结果将截断任何小数部分,因此“fine”0-99的任何值都将导致零。解决办法是:

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

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

假设
getConfig().getInt()
返回一个
int
,此java除法:

getConfig().getInt("fine) / 100
将进行整数除法,并生成一个
int
结果,该结果将截断任何小数部分,因此“fine”0-99的任何值都将导致零。解决办法是:

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

将“d”添加到100会使100成为一个双精度的值,它将执行双除法,保留小数部分。

金额的类型是什么?金额的类型是双精度的。金额的类型是什么?金额的类型是双精度的。我从没想过会这么简单。谢谢这是正确的答案,但我更喜欢100d或100f来强制数据类型。它保证你得到你想要的类型。@Mike 100.0绝对保证加倍。请参阅:“如果浮点文字的后缀为ASCII字母F或F,则它的类型为float;否则它的类型为double,并且可以选择后缀为ASCII字母D或D”。除非有很好的理由,通常涉及非常大的数组,否则应该使用double而不是float。谢谢这是正确的答案,但我更喜欢100d或100f来强制数据类型。它保证你得到你想要的类型。@Mike 100.0绝对保证加倍。请参阅:“如果浮点文字的后缀为ASCII字母F或F,则它的类型为float;否则它的类型为double,并且可以选择后缀为ASCII字母D或D”。除非有很好的理由(通常涉及非常大的阵列),否则应该使用double而不是float。