在Scala中将十进制分数转换为二进制分数
我有一个介于1和2之间的十进制数字序列。在获取它们的倒数之后,我希望将数字转换为二进制形式,这样我就可以分离出倒数的10个MSB。 我不想将其转换为IEEE-754浮点表示,而只是转换为二进制格式在Scala中将十进制分数转换为二进制分数,scala,floating-point,Scala,Floating Point,我有一个介于1和2之间的十进制数字序列。在获取它们的倒数之后,我希望将数字转换为二进制形式,这样我就可以分离出倒数的10个MSB。 我不想将其转换为IEEE-754浮点表示,而只是转换为二进制格式 reciprocal = 1.0/3.0 Double = 0.3333333333333333 上述手动转换为二进制的数字将为我提供无限位流: reciprocalBits = 0.0101010101010101010101010101010101010101010101010101...
reciprocal = 1.0/3.0
Double = 0.3333333333333333
上述手动转换为二进制的数字将为我提供无限位流:
reciprocalBits = 0.0101010101010101010101010101010101010101010101010101...
我想要上述二进制数的10个最高有效位。
如何在Scala中将interactive
转换为reciprocarbits
。的Java代码在这里可能很有用,但可能有人知道一些更好的东西。
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)