我正在执行浮动值比较......并在下面的程序中。这是一个非常基本的..在比较期间有一些十进制长度的技巧。 请帮我理解这一点。
+(dat$a > dat$high_cutoff | dat$b > dat$high_cutoff)
# [1] 0 1 0 1 0
结果:pi大于3
然后我从所有三个值中删除了最后一位数字(9)
class C
{
public static void main(String args[])
{
Float pi = new Float(3.13999999f);
if (pi > 3.13999999) {
System.out.print("pi is bigger than 3. ");
}
else if (pi < 3.13999999){
System.out.print("pi is less than 3. ");
}
}
}
现在的结果是:pi小于3
答案 0 :(得分:2)
当然结果出人意料。你不应该/不能进行精确的浮动比较。
通常情况下,如果你想比较两个浮动值(A和B),你可以得到差异A-B,然后将它与可接受的误差进行比较(假设为0.00001)。
另一种方法是使用Float.compareTo(Float)方法。
Float pi = new Float(3.139999f);
int result = pi.compareTo(new Float(3.139999f));
if (result == 0) {
System.out.println("they are equal");
} else {
System.out.println("something went wrong");
}
输出:
they are equal