2014-01-09 24 views
0

我試圖在一個二進制字符串(以Java爲單位)的區間(假設在「a」和「b」之間)對Double值進行編碼,給定精度(1.234 - 精度在這種情況下是3)Double值。結果字符串的長度應該相等。將Double值編碼爲二進制字符串

我已經嘗試使用:

String binaryForm = Long.toBinaryString(Double.doubleToRawLongBits(n)); 

不幸的是,所得到的字符串不相等的長度。

任何想法?由此產生的字符串將被用作遺傳算法中的染色體。

+0

爲什麼字符串需要長度相等?僅僅因爲十進制的精度是相同的,並不意味着二進制表示將會是。 –

+0

當然,你是對的。這些字符串必須具有相同的長度,以便它們可以作爲染色體在遺傳算法中使用。 –

+0

雙精度值是64位,因此將零點結果保留爲64個字符。 – rgettman

回答

0

使用@rgettman的建議,但將0和c = b - a之間的值標準化。因此,雙輸入n的新值(m)爲:

m = n - a 

然後將zero-pad改爲64.所有輸入均爲正值。

相關問題