epsilon 的值是多少?

What is the value of epsilon?

java 中的 epsilon 值是否始终相同?

在我的在线课程中class它说

double x = 0.7, y = 1.0 - 0.1 - 0.1 - 0.1; 
System.out.println("x is " + (x)); 
System.out.println("y is " + (y)); 
System.out.println("x == y is " + (x == y)); 
final double EPSILON = 1.0E-6; 
System.out.println("Math.abs(x - y) < EPSILON is " + (Math.abs(x - y) < EPSILON));

产生

x is 0.7
y is 0.7000000000000001
x == y is false
Math.abs(x - y) < EPSILON is true

所以我只是想知道 epsilon 总是 1.0E-6 还是可以是任何东西?

你刚刚定义为百万分之一。它可以是 (a) 对您有用且 (b) 可以用所选格式表示的任何内容。

您选择的 epsilon 的大小取决于您使用的值的大小;它代表了您对 'close enough' 含义的看法,对于接近 1 的数字足够接近与对于接近 1000000000000000 或接近 0.000000000000001 的数字足够接近是不同的。