我想将浮点数改为二进制形式,例如12.345
我完成了整型部分:
(12.345).floor.to_s(2) #=> 1100
然而,对于小部分人来说,却找不到最好的办法。
我确实有办法,就像维基百科显示的那样,但这是一个很长的过程:一个while循环,其中包含一堆我想避免的临时变量。我想知道有没有更好的方法在Ruby中实现这一点。
我想要得到的完整二进制形式是字符串形式的
1100.011
。 最佳答案
您可以将它乘以足够大的功率2
(例如2 ** 10
),然后将其转换为二进制,然后再将小数点插入后面。
(12.345 * 2 ** 10).to_i.to_s(2).insert(-(10 + 1), ".")
# => => "1100.0101100001"
顺便说一下,我认为
1100.011
不是正确的形式。关于ruby - ruby 中的二进制分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17862483/