gpt4 book ai didi

java - 每个 float 都可以精确地表示为 double 吗?

转载 作者:太空狗 更新时间:2023-10-29 22:42:50 25 4
gpt4 key购买 nike

是否可以在 double 变量中准确表示 float 变量的每个可能值?

换句话说,对于所有可能的值 X,以下操作都会成功:

float f1 = X;
double d = f1;
float f2 = (float)d;

if(f1 == f2)
System.out.println("Success!");
else
System.out.println("Failure!");

我怀疑没有异常(exception),或者即使有也只是针对边缘情况(例如 +/- 无穷大或 NaN)。

编辑:问题的原始措辞令人困惑(陈述了两种方式,一种会回答“否”,另一种会回答"is"相同的答案)。我已改写它以使其与问题标题相匹配。

最佳答案

是的。

通过列举所有可能的情况来证明:

public class TestDoubleFloat  {
public static void main(String[] args) {
for (long i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE; i++) {
float f1 = Float.intBitsToFloat((int) i);
double d = (double) f1;
float f2 = (float) d;
if (f1 != f2) {
if (Float.isNaN(f1) && Float.isNaN(f2)) {
continue; // ok, NaN
}
fail("oops: " + f1 + " != " + f2);
}
}
}
}

在我的机器上在 12 秒内完成。 32 位很小

关于java - 每个 float 都可以精确地表示为 double 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com