首页 文章

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

提问于
浏览
1

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

reciprocal = 1.0/3.0
Double = 0.3333333333333333

手动转换为二进制的上述数字将给我一个无限的比特流:

reciprocalBits = 0.0101010101010101010101010101010101010101010101010101...

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

1 回答

  • 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)
    

相关问题