在Scala中将小数部分转换为二进制分数

时间:2015-12-22 11:31:57

标签: scala floating-point

我有一个介于1和2之间的十进制数字序列。在得到它们的倒数之后,我想要以二进制形式转换的数字,以便我可以隔离倒数的10个MSB。 我不想在IEEE-754浮点表示中转换它,而只是以二进制格式转换它。

reciprocal = 1.0/3.0
Double = 0.3333333333333333 

手动转换为二进制文件的上述数字将为我提供无限比特流:

reciprocalBits = 0.0101010101010101010101010101010101010101010101010101...

我想要上述二进制数的10个最重要的位。 如何在Scala中将reciprocal转换为reciprocalBits

1 个答案:

答案 0 :(得分: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)