【发布时间】:2010-09-16 15:32:53
【问题描述】:
这是下面程序的输出。
value is : 2.7755575615628914E-17
Double.compare with zero : 1
isEqual with zero : true
我的问题是,epsilon 值应该是多少?有什么可靠的方法来获取价值,而不是从天上掉下来的数字。
package sandbox;
/**
*
* @author yccheok
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
double zero = 1.0/5.0 + 1.0/5.0 - 1.0/10.0 - 1.0/10.0 - 1.0/10.0 - 1.0/10.0;
System.out.println("value is : " + zero);
System.out.println("Double.compare with zero : " + Double.compare(zero, 0.0));
System.out.println("isEqual with zero : " + isEqual(zero, 0.0));
}
public static boolean isEqual(double d0, double d1) {
final double epsilon = 0.0000001;
return d0 == d1 ? true : Math.abs(d0 - d1) < epsilon;
}
}
【问题讨论】:
-
@Cheok,你的问题不清楚,你对 epsilon 有什么期望?
标签: java