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将Javascript1.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