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 的数字足够接近是不同的。
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 的数字足够接近是不同的。