Java 以编程方式查找浮点的大小
免责声明:这个问题可能没有实际价值,它更多的是一个困惑/好奇的问题 在Java中,我可以编写以下代码以编程方式查找int的大小:Java 以编程方式查找浮点的大小,java,Java,免责声明:这个问题可能没有实际价值,它更多的是一个困惑/好奇的问题 在Java中,我可以编写以下代码以编程方式查找int的大小: public static void main(String[] args) { int x = 1; int count = 1; while((x = x << 1) != 0) { count++; System.out.println("x: " + x +
public static void main(String[] args)
{
int x = 1;
int count = 1;
while((x = x << 1) != 0)
{
count++;
System.out.println("x: " + x + ", " + count);
}
System.out.println("size: " + count);
}
publicstaticvoidmain(字符串[]args)
{
int x=1;
整数计数=1;
while((x=x将浮点写入ByteArrayOutputStream并获取结果的长度
import java.io.*;
class Test
{
public static void main(String[] args) throws Exception
{
ByteArrayOutputStream baos =new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(baos);
dos.writeFloat(0f);
System.err.println(baos.toByteArray().length);
}
}
$ javac Test.java
$ java Test
4
Java浮点数遵循IEEE浮点数标准,因此您可以轻松了解细节。简而言之,“已使用”和“未使用”之间没有明确的区分浮点的一部分,因为它与二者的补码整数编码相同。基本的除法分为符号位、尾数和指数。您可能会看到使用了什么尾数位和什么指数位,但这远非一项简单的任务。我会编写一个二进制搜索。从0开始,然后选择正负0.5*float.MAX\u值并保留p迭代
此方法适用于任何数字类型,并且应该比上面的循环快得多。如果您想在java中查找基本数据类型的大小,我建议您在此处查看:否则您可以使用getObjectSize以编程方式查找大小。我不明白这一点。答案将是4,而不管值是多少,一个d那么多都写在JLS里了。也许我只是误解了这个问题。这是那个家伙想要的存储空间。@Marko这会教我在喝咖啡之前回答问题!我也设法把问题弄错了:)真正的问题比我想象的要琐碎得多。