如何将 java float 表示为二进制文字?
How to represent java float as a binary literal?
我试图弄清楚 float 和 double 在 Java 中是如何工作的。
there说明我们可以将5.3表示为
0 | 10000001 | 01010011001100110011001
但是当我尝试将其写为二进制时 java 文字
float number = 0b01000000101010011001100110011001;
System.out.println(number);
我得到输出 1.0848567E9
。
如果我使用 this question
的方式将 5.3 表示为二进制
int intBits = Float.floatToIntBits(5.3F);
String binary = Integer.toBinaryString(intBits);
System.out.println(binary);
我得到一个完全令人困惑的结果 1000000101010011001100110011010
,第一个位置是 1,我认为这意味着负号。
有人可以帮助我了解我做错了什么吗?
我可以使用二进制 java 文字来表示浮点数和双精度数吗?
谢谢。
根据Java Language Specification,没有您想要的形式的二进制浮点数。
0b01000000101010011001100110011001
是一个 int
文字,但是有一种方法可以将这个 int
转换为 float
:
System.out.println(Float.intBitsToFloat(0b01000000101010011001100110011001));
这会打印 5.2999997
,因为您的表述不是最准确的。更准确的是:
0b01000000101010011001100110011010
使用它会打印 5.3。
另请参阅工具 IEEE Floating Point Converter,您可以使用它来获取浮点数的二进制表示形式。
我试图弄清楚 float 和 double 在 Java 中是如何工作的。 there说明我们可以将5.3表示为
0 | 10000001 | 01010011001100110011001
但是当我尝试将其写为二进制时 java 文字
float number = 0b01000000101010011001100110011001;
System.out.println(number);
我得到输出 1.0848567E9
。
如果我使用 this question
的方式将 5.3 表示为二进制int intBits = Float.floatToIntBits(5.3F);
String binary = Integer.toBinaryString(intBits);
System.out.println(binary);
我得到一个完全令人困惑的结果 1000000101010011001100110011010
,第一个位置是 1,我认为这意味着负号。
有人可以帮助我了解我做错了什么吗? 我可以使用二进制 java 文字来表示浮点数和双精度数吗?
谢谢。
根据Java Language Specification,没有您想要的形式的二进制浮点数。
0b01000000101010011001100110011001
是一个 int
文字,但是有一种方法可以将这个 int
转换为 float
:
System.out.println(Float.intBitsToFloat(0b01000000101010011001100110011001));
这会打印 5.2999997
,因为您的表述不是最准确的。更准确的是:
0b01000000101010011001100110011010
使用它会打印 5.3。
另请参阅工具 IEEE Floating Point Converter,您可以使用它来获取浮点数的二进制表示形式。