Java 百分比
所以我有点沮丧,因为我试了多少次。 我在这里使用#/100=%*Balance=Fine,但由于某些原因,结果总是为0。注意,这使用了一个外部APIJava 百分比,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
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。