float或double的IEEE745 二进制形式

阅读更多

下面两个函数可以返回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。第一个函数也有同样的问题。

还没想到很好的解决方法

你可能感兴趣的:(IEEE747,float,double)