在Java中,float的双精度类型转换总是相同吗?

问题描述 投票:0回答:1

假设我们有一个定义为

float p = 4.423
的 java float,每当应用程序流中的变量
double q =(double) p
时,每当它被转换为 double 时,我们总是会得到相同的 double 值吗? 假设还有另一个地方,我正在访问变量
double r = (double) p
。 r 总是等于 q 吗?

java floating-point
1个回答
0
投票

这并不能证明它是真的,但表明了人们对此的高度信心。

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
© www.soinside.com 2019 - 2024. All rights reserved.