gpt4 book ai didi

java - Double.POSITIVE_INFINITY == Float.POSITIVE_INFINITY

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:32 24 4
gpt4 key购买 nike

我试过了

System.out.println(Double.isInfinite(Float.POSITIVE_INFINITY))
System.out.println(Double.isInfinite(Float.NEGATIVE_INFINITY));

输出是

true
true

所以这意味着“无限”对于两种数据类型是相同的?

最佳答案

是也不是。是的,因为在抽象意义上无限就是无限(而且,正如我在下面解释的那样,出于大多数代码的目的, float 无论如何都会转换为 double )。

但是,不是,因为在位级别上,这两个无穷大是不同的。 Java 中的 double 是 64 位,而 Java 中的 float 是 32 位,因此它们在表示级别上存在细微差别。

在 Java 中, float ( float 和 double )使用 IEEE 754 表示浮点格式,这是现在几乎每个人都使用的标准。每个数字都以二进制表示为一个符号位,加上一定数量的指数位,再加上一定数量的尾数(尾数)位。在 float 或 double 中,正无穷大用符号位 0 表示,指数位全 1,尾数位全 0。负无穷大的表示方式相同,只是符号位为 1。所以无穷大表示为两种非常相似的方式,但由于 float 和 double 之间的指数和尾数位计数不同,因此位级模式不同。

出于编写代码的目的,您可以将它们视为相同。每当您同时使用 double 和 float 时,除非您另有明确说明,否则 float 将自动转换为 double 并且表达式将产生 double ,因此对于大多数实际用途而言, float 无穷大“表现得像” double 无穷大。

关于java - Double.POSITIVE_INFINITY == Float.POSITIVE_INFINITY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083370/

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