Java 将双精度值编码为二进制字符串

Java 将双精度值编码为二进制字符串,java,encoding,genetic-algorithm,Java,Encoding,Genetic Algorithm,我试图将一段时间内的双精度值(比如在“a”和“b”之间)编码为二进制字符串(在Java中),给定双精度值的精度(在本例中为1.234-精度为3)。结果字符串的长度应该相等 我试过使用: String binaryForm = Long.toBinaryString(Double.doubleToRawLongBits(n)); 不幸的是,结果字符串的长度不相等 有什么想法吗?结果字符串将用作遗传算法中的染色体。使用@rgetman的建议,但将0和c=b-a之间的值标准化。因此,双输入n的新值(

我试图将一段时间内的双精度值(比如在“a”和“b”之间)编码为二进制字符串(在Java中),给定双精度值的精度(在本例中为1.234-精度为3)。结果字符串的长度应该相等

我试过使用:

String binaryForm = Long.toBinaryString(Double.doubleToRawLongBits(n));
不幸的是,结果字符串的长度不相等


有什么想法吗?结果字符串将用作遗传算法中的染色体。

使用@rgetman的建议,但将0和c=b-a之间的值标准化。因此,双输入n的新值(m)为:

m = n - a

然后将pad归零到64。所有输入都是正数。

为什么字符串长度必须相等?仅仅因为十进制的精度是相同的,并不意味着二进制的表示形式是相同的。当然,你是对的。字符串必须具有相同的长度,以便在遗传算法中作为染色体使用。双值是64位,因此将结果从左侧零填充到64个字符。似乎使用我发布的代码,负值生成64个字符的字符串,正值生成63个字符的字符串。在前面添加一个“0”可能就行了。更正:正值为62个字符字符串。但我能保证无论我选择什么值进行编码,它都是62表示正数,64表示负数吗?