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

忍者男孩

1.012通过使用命令使用Javascript将浮点数转换为十六进制1.012.toString(16),现在可以做什么来将javascript的输出反转1.03126e978d4fe1.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP将十六进制转换为浮点数

在Java中使用给定的浮点格式将十六进制转换为双精度

十六进制->浮点转换不正确

将十六进制转换为浮点数

如何将十六进制切片转换为带二进制补码的浮点数

如何将十六进制转换为浮点数

将浮点数表示为十六进制

十六进制浮点文字

Python如何将浮点数十六进制转换为十进制

如何在Perl中将浮点数转换为十六进制字符串?

将十六进制字符串转换为浮点型

如何在python中将十六进制值转换为浮点数

十六进制转换为浮点数-JS中的Big Endian(ABCD)

将数字(也可以是浮点数)转换为十六进制,反之亦然

在Javascript中将64位十六进制转换为十进制浮点数

Python程序以单精度将十六进制转换为IEEE-754浮点

C ++将4个十六进制值转换为浮点数

Float24(24位浮点数)转换为十六进制?

将十六进制转换为C中的浮点数

将十六进制转换为浮点SQL

将浮点值转换为十六进制

将浮点数转换为十六进制格式

将十六进制文件转换为php中的浮点数

如何使用 VB.Net 将 4 位十六进制(2 字节)转换为十进制(浮点)值

如何使用 C# 将十六进制转换为浮点数

如何在编译时将常量浮点值转换为 4 个字节的十六进制常量值?

如何在 VB.NET 中将浮点数转换为十六进制?

将十六进制字符串转换为浮点数

如何在 Node.js 中将 4 字节十六进制转换为浮点数