假设我们有一个定义为
float p = 4.423
的 java float,每当应用程序流中的变量 double q =(double) p
时,每当它被转换为 double 时,我们总是会得到相同的 double 值吗?
假设还有另一个地方,我正在访问变量double r = (double) p
。 r 总是等于 q 吗?
这并不能证明它是真的,但表明了人们对此的高度信心。
Random r = new Random(123);
int n = 100_000_000;
double [] doubles = new double[n];
for (int i = 0; i < n; i++) {
doubles[i] = (double)r.nextFloat();
}
r.setSeed(123); // generate same values anew
int count = 0;
for (double d : doubles) {
if (d == (double)r.nextFloat()) {
count++;
}
}
System.out.printf("Count = %,d%n", count);
打印
Count = 100,000,000