2015-12-22 2 views
1

У меня есть последовательность десятичных чисел между 1 и 2. После принятия их взаимности я хочу, чтобы число, преобразованное в двоичной форме, чтобы я мог изолировать 10 MSB ответного. Я не хочу преобразовывать его в представление с плавающей точкой IEEE-754, но просто в двоичном формате.преобразование десятичной дробей в двоичную дробь в Scala

reciprocal = 1.0/3.0 
Double = 0.3333333333333333 

выше номер вручную преобразования в двоичную даст мне бесконечный поток битов:

reciprocalBits = 0.0101010101010101010101010101010101010101010101010101... 

Я хочу 10 наиболее значимых битов выше двоичного числа. Как преобразовать reciprocal в reciprocalBits в Scala.

+0

Код Java по адресу http://stackoverflow.com/a/756715/86485 может быть полезен здесь, но, возможно, кто-то знает что-то лучше. –

ответ

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) 
Смежные вопросы