Java 以编程方式查找浮点的大小

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 +

免责声明:这个问题可能没有实际价值,它更多的是一个困惑/好奇的问题

在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 + ", " + 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这会教我在喝咖啡之前回答问题!我也设法把问题弄错了:)真正的问题比我想象的要琐碎得多。