Skip to content

Commit 9e5b860

Browse files
添加注释
1 parent e23aaf5 commit 9e5b860

File tree

1 file changed

+1
-68
lines changed

1 file changed

+1
-68
lines changed

operators/DoubleEquivalence.java

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1 @@
1-
// operators/DoubleEquivalence.java
2-
// (c)2021 MindView LLC: see Copyright.txt
3-
// We make no guarantees that this code is fit for any purpose.
4-
// Visit http://OnJava8.com for more book information.
5-
6-
public class DoubleEquivalence {
7-
static void show(String desc, Double n1, Double n2) {
8-
System.out.println(desc + ":");
9-
System.out.printf(
10-
"%e==%e %b %b%n", n1, n2, n1 == n2, n1.equals(n2));
11-
}
12-
@SuppressWarnings("deprecation")
13-
public static void test(double x1, double x2) {
14-
// x1.equals(x2) // Won't compile
15-
System.out.printf("%e==%e %b%n", x1, x2, x1 == x2);
16-
17-
Double d1 = x1;
18-
Double d2 = x2;
19-
show("Automatic", d1, d2);
20-
21-
Double r1 = new Double(x1);
22-
Double r2 = new Double(x2);
23-
show("new Double()", r1, r2);
24-
25-
Double v1 = Double.valueOf(x1);
26-
Double v2 = Double.valueOf(x2);
27-
show("Double.valueOf()", v1, v2);
28-
29-
}
30-
public static void main(String[] args) {
31-
32-
//比较0和最小的浮点数
33-
test(0, Double.MIN_VALUE);
34-
35-
System.out.println("------------------------");
36-
37-
//最大值 和 (最大值 和 (最小值只差的一百万倍))比较 一个非常大的数值减去一个相对较小的数值,
38-
//非常大的数值并不会发生显著变化。这个叫做 <b> 舍入误差 <\b>
39-
test(Double.MAX_VALUE,
40-
Double.MAX_VALUE - Double.MIN_VALUE * 1_000_000);
41-
42-
System.out.println("------------------------");
43-
test(2.1, 3.5);
44-
45-
System.out.println("------------------------");
46-
System.out.println(Double.MIN_VALUE); //2^-1074
47-
System.out.println(Double.MAX_VALUE);
48-
49-
50-
}
51-
}
52-
/* Output:
53-
0.000000e+00==4.900000e-324 false
54-
Automatic:
55-
0.000000e+00==4.900000e-324 false false
56-
new Double():
57-
0.000000e+00==4.900000e-324 false false
58-
Double.valueOf():
59-
0.000000e+00==4.900000e-324 false false
60-
------------------------
61-
1.797693e+308==1.797693e+308 true
62-
Automatic:
63-
1.797693e+308==1.797693e+308 false true
64-
new Double():
65-
1.797693e+308==1.797693e+308 false true
66-
Double.valueOf():
67-
1.797693e+308==1.797693e+308 false true
68-
*/
1+
// operators/DoubleEquivalence.java// (c)2021 MindView LLC: see Copyright.txt// We make no guarantees that this code is fit for any purpose.// Visit http://OnJava8.com for more book information.public class DoubleEquivalence { static void show(String desc, Double n1, Double n2) { System.out.println(desc + ":"); System.out.printf( "%e==%e %b %b%n", n1, n2, n1 == n2, n1.equals(n2)); } @SuppressWarnings("deprecation") public static void test(double x1, double x2) { // x1.equals(x2) // Won't compile System.out.printf("%e==%e %b%n", x1, x2, x1 == x2); Double d1 = x1; Double d2 = x2; show("Automatic", d1, d2); Double r1 = new Double(x1); Double r2 = new Double(x2); show("new Double()", r1, r2); Double v1 = Double.valueOf(x1); Double v2 = Double.valueOf(x2); show("Double.valueOf()", v1, v2); } public static void main(String[] args) { //比较0和最小的浮点数 test(0, Double.MIN_VALUE); System.out.println("------------------------"); //最大值 和 (最大值 和 (最小值只差的一百万倍))比较 一个非常大的数值减去一个相对较小的数值, //非常大的数值并不会发生显著变化。这个叫做 <b> 舍入误差 <\b> test(Double.MAX_VALUE, Double.MAX_VALUE - Double.MIN_VALUE * 1_000_000); System.out.println("------------------------"); test(2.1, 3.5); System.out.println("------------------------"); System.out.println(Double.MIN_VALUE); //2^-1074 System.out.println(Double.MAX_VALUE); }}/* Output:0.000000e+00==4.900000e-324 falseAutomatic:0.000000e+00==4.900000e-324 false falsenew Double():0.000000e+00==4.900000e-324 false falseDouble.valueOf():0.000000e+00==4.900000e-324 false false------------------------1.797693e+308==1.797693e+308 trueAutomatic:1.797693e+308==1.797693e+308 false truenew Double():1.797693e+308==1.797693e+308 false trueDouble.valueOf():1.797693e+308==1.797693e+308 false true*/

0 commit comments

Comments
 (0)