use*_*454 9 java floating-point
我试过了
System.out.println(Double.isInfinite(Float.POSITIVE_INFINITY))
System.out.println(Double.isInfinite(Float.NEGATIVE_INFINITY));
Run Code Online (Sandbox Code Playgroud)
而输出是
true
true
Run Code Online (Sandbox Code Playgroud)
那么这意味着两种数据类型的"无限"是一样的吗?
是的,不是.是的,因为在抽象意义上,无穷大是无限的(并且,正如我在下面解释的那样,为了大多数代码浮点数的目的,无论如何都会转换为双精度).
不,但是,因为在比特级别,两个无穷大是不同的.Java中的double是64位,Java中的float是32位,因此它们在表示级别上是不同的.
在Java中,浮点数(浮点数和双精度数)使用IEEE 754浮点格式表示,这是当今每个人都使用的标准.每个数字以二进制形式表示为符号位,加上一定数量的指数位,加上一定数量的尾数(有效位)位.在float或double中,正无穷大用符号位0表示,指数位全1,尾数位全0.负无穷大以相同方式表示,除了符号位为1.因此无穷大表示为两种非常相似的方式,但由于浮点数和双精度数之间的指数和尾数位数不同,因此位级模式不同.
出于编写代码的目的,您可以将它们视为相同.每当你使用双打和浮点数时,除非你明确说明否则浮点数将自动转换为double,表达式将产生一个double,因此浮点无穷大"就像一个双无穷大",用于大多数实际用途.