欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

float或double的IEEE745 二进制形式

程序员文章站 2022-05-20 18:26:40
...

下面两个函数可以返回float和double类型的数据的IEEE745二进制形式

public String convert(float num) {
		int intVal = Float.floatToIntBits(num);
		return intVal > 0 
				? "0" + Integer.toBinaryString(intVal) 
				: Integer.toBinaryString(intVal);
	}

	public String convert(double num) {
		long longVal = Double.doubleToLongBits(num);
		return longVal > 0 
				? "0" + Long.toBinaryString(longVal) 
				: Long.toBinaryString(longVal);
	}

 第二个函数有个bug,当形参为-0,+0,+0.0, +0.0d时,只返回0;但是形参为-0.0和-0.0d时,可以正确返回1000000000000000000000000000000000000000000000000000000000000000。第一个函数也有同样的问题。

还没想到很好的解决方法