2015-12-22 29 views
1

我有一個介於1和2之間的十進制數字序列。在取其倒數後,我想要以二進制形式轉換的數字,以便我可以隔離倒數的10個MSB。 我不想在IEEE-754浮點表示中轉換它,而只是以二進制格式轉換它。在Scala中將十進制小數轉換成二進制小數

reciprocal = 1.0/3.0 
Double = 0.3333333333333333 

上手動轉換爲二進制會給我無限的比特流的上述數:

reciprocalBits = 0.0101010101010101010101010101010101010101010101010101... 

我想上面的二進制數的10最顯著位。 如何在Scala中將reciprocal轉換爲reciprocalBits

+0

http://stackoverflow.com/a/756715/86485上的Java代碼在這裏可能很有用,但也許有人會更好地瞭解一些東西。 –

回答

1
scala> val reciprocal = 1.0/3.0 
reciprocal: Double = 0.3333333333333333 

scala> List.tabulate(10)(x => ((reciprocal * math.pow(2,x)).toInt % 2)) 
res0: List[Int] = List(0, 0, 1, 0, 1, 0, 1, 0, 1, 0) 
相關問題