double bonusScore = 10;
if (bonusScore > 0) {
//code body
}
我想比较bonusScore的两倍和0,我该怎么做,因为如果按照上面的方式完成它是不准确的,我不知道为什么。
最佳答案
在java中,我们在比较 float 时需要小心。示例:
double a = 1.3;
double b = 3.0;
double bonusScore = a * b;
System.out.println(bonusScore); // expect bonusScore = 3.9
bonusScore = bonusScore - 3.9;
System.out.println(bonusScore); // expect bonusScore = 0
我有输出:
3.9000000000000004 // expect 3.9
4.440892098500626E-16 // expect 0
很明显,我们必须将它们与允许的容差进行比较。这里我们需要将 bonusScore
与零进行比较,并具有容差 0.00001
:
if (bonusScore > 0.00001)
我读过一篇非常有用的article关于 float 。希望这有帮助。
关于java - 如何在Java中比较长整型变量和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091057/