双重比较零特殊情况?

时间:2014-01-08 20:05:39

标签: java double

我正在初始化一个双数组:

double [] foo = new double[n];

我的理解是java语言规范导致数组中的所有值都被初始化为零。

当我查看算法时,数组中的某些条目会设置为正值。

因此,要检查特定元素是否具有非零值集,使用

是否安全
if (foo[i] > 0.0)

或者我应该在那里使用epsilon。或者类似地,如果我想知道是否还没有设置值,我可以使用==,假设零不是计算值,而是原始初始化零?通常我当然不会使用==来比较浮点数,但我想知道这是否是一个特例?

谢谢!

2 个答案:

答案 0 :(得分:2)

考虑这段代码

public static void main(String[] args) {
    double [] foo = new double[10];
    foo[5] = 10;                            // Sets the sixth element to 10
    for (int i = 0; i < foo.length; i++) {
        double val = foo[i];
        if (val != 0) {
            System.out.printf("foo[%d] = %f\n", i, val);
        }
    }
}

输出

 foo[5] = 10.000000

答案 1 :(得分:1)

使用

应该没有问题
if (foo[i] > 0.0)