我1.012
通过使用命令使用Javascript将浮点数转换为十六进制1.012.toString(16)
,现在可以做什么来将javascript的输出反转1.03126e978d4fe
为1.012
使用Ruby?
简而言之,反转在Ruby中编码为十六进制的浮点数的最简单方法是什么?
谢谢。
起初这个输出看起来很奇怪,但实际上与我们的以十为基的浮点数一致。1.012
对我们来说看起来很正常,因为我们每天都使用十进制数字系统。
如果我理解正确,则输出可以看作是有理数,分子为整数(不带“。”),分母为16**(length of "decimal" part)
:
def string_to_float(string, base = 10)
string.delete('.').to_i(base).to_f / base**(string.reverse.index('.') || 0)
end
string_to_float('1.03126e978d4fe', 16)
#=> 1.012
string_to_float('1c.8', 16)
#=> 28.5
string_to_float('3.243f6a8885a3', 16)
#=> 3.141592653589793
string_to_float('20.0', 16)
#=> 32.0
string_to_float('20.', 16)
#=> 32.0
string_to_float('20', 16)
#=> 32.0
string_to_float('3.14159', 10)
#=> 3.14159
string_to_float('11.001001000011111101101010100010001000010110100011', 2)
#=> 3.141592653589793
如果只需要转换十六进制浮点数,则可以删除base
参数:
def hex_string_to_float(hex)
hex.delete('.').to_i(16).to_f / 16**(hex.reverse.index('.') || 0)
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句