Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想将浮点数更改为二进制形式,例如对于12.345. 我完成了整数部分:
12.345
(12.345).floor.to_s(2) #=> 1100
然而,对于这一部分,找不到最好的方法来做到这一点。
我确实有办法,就像维基百科在这里展示的那样,但这是一个非常漫长的过程:一个带有一堆我想避免的临时变量的 while 循环。我想知道在 Ruby 中是否有更好的方法来做到这一点。
我想要得到的完整二进制形式是1100.011字符串形式。
1100.011
2您可以将它与(比如)的足够大的幂相乘2 ** 10,然后将其转换为二进制,然后将小数点插入回去。
2
2 ** 10
(12.345 * 2 ** 10).to_i.to_s(2).insert(-(10 + 1), ".") # => => "1100.0101100001"
顺便说一句,我不认为1100.011是正确的形式。