Javascript 在Ruby中将浮点十六进制转换为浮点

Javascript 在Ruby中将浮点十六进制转换为浮点,javascript,ruby,ruby-on-rails-4,Javascript,Ruby,Ruby On Rails 4,我通过使用命令1.012.toString(16)使用Javascript将一个浮点数(比如1.012转换为十六进制,现在如何使用Ruby将Javascript1.03126e978d4fe的输出反转为1.012 简言之,在Ruby中反转十六进制浮点最简单的方法是什么 谢谢。这是我见过的最奇怪的转变 i, m = "1.03126e978d4fe".split('.') Integer("0x#{i}") + 1.0 * Integer("0x#{m}") / Integer("0x1#{'0'

我通过使用命令
1.012.toString(16)
使用Javascript将一个浮点数(比如
1.012
转换为十六进制,现在如何使用Ruby将Javascript
1.03126e978d4fe
的输出反转为
1.012

简言之,在Ruby中反转十六进制浮点最简单的方法是什么


谢谢。

这是我见过的最奇怪的转变

i, m = "1.03126e978d4fe".split('.')
Integer("0x#{i}") + 1.0 * Integer("0x#{m}") / Integer("0x1#{'0' * m.length}")
#⇒ 1.012

这个输出一开始看起来很奇怪,但它实际上与我们的基本10个浮点一致
1.012
对我们来说很正常,因为我们每天都使用十进制数字系统

如果我理解正确,输出可以被视为有理数,分子是整个十六进制数(不带“.”),分母是
16**(“十进制”部分的长度)

如果只需要转换十六进制浮点,可以删除
base
参数:

def hex_string_to_float(hex)
  hex.delete('.').to_i(16).to_f / 16**(hex.reverse.index('.') || 0)
end

“十六进制”和“浮点数”不能在同一句话中。那个输出完全是疯了。@tadman:一开始我也很困惑。但是它确实有意义,并且与我们的基本10个浮点一致。为什么
整数
与所有的字符串黑客行为一致,而不是
。to_i(16)
?啊哈。我甚至不理解这个问题,我不理解答案,但显然,你解决了它。
I.to\u I
应该是
I.to\u I(16)
Float(32)
编码为
20.0
。您的方法可以写为
i.to_i(16)+m.to_i(16)。to_f/16**m.length
顺便说一句。
16**m
是一种方法<代码>1
def hex_string_to_float(hex)
  hex.delete('.').to_i(16).to_f / 16**(hex.reverse.index('.') || 0)
end