当前位置: 首页 > 面试题库 >

Java-将十六进制转换为IEEE-754 64位浮点数-双精度

姜志
2023-03-14
问题内容

我正在尝试将以下十六进制字符串转换为“ 41630D54FFF68872”到9988776.0(float-64)。

使用单精度float-32,我可以这样做:

int intBits = Long.valueOf("hexFloat32", 16).intValue();
float floatValue = Float.intBitsToFloat(intBits);

但这会引发:java.lang.NumberFormatException:使用上面的64位十六进制时,Infinite或NaN。

如何将十六进制转换为使用64位IEEE-754编码的双精度浮点数?

谢谢


问题答案:

您需要双精度,所以Float不是正确的类-仅用于单精度。

相反,您需要Double类,特别是Double.longBitsToDouble。



 类似资料:
  • 我正在尝试将十六进制数据添加到十六进制字符串中,我需要使用它们的IEEE表示将浮点数添加到该字符串中。对于整数,这很简单: 其中value是数字的VARCHAR,params是包含十六进制字符串的VARCHAR。这个技巧适用于整数,但对于十进制,它会截断十进制部分,并将整数部分转换为十六进制整数。如果十进制的大小是固定的(java float或double),如何将值转换为十进制数的IEEE浮点表

  • 问题内容: 如何在Python中将以下十六进制字符串转换为float(单精度32位)? 问题答案: 在 Python 3中 : 在 Python 2中 :

  • 问题内容: 我必须将,以s 表示(例如)转换为浮点值( IEEE-754 转换)。我没有使用strconv.ParseFloat函数做到这一点。还有什么我要用的吗?到目前为止我找不到。我也尝试先将其转换为整数,然后转换为浮点数,但结果是错误的。 我最后一次尝试的代码: 问题答案: 首先,需要说明输入的位长。由于十六进制表示形式有4个字节(8个十六进制数字),因此很可能是a (需要询问者澄清)。 您

  • 本文向大家介绍C#浮点,双精度,十进制,包括了C#浮点,双精度,十进制的使用技巧和注意事项,需要的朋友参考一下 示例 浮动 float是.NET数据类型的别名System.Single。它允许存储IEEE 754单精度浮点数。存在此数据类型mscorlib.dll,每个C#项目在创建它们时都会隐式引用该数据类型。 大致范围:-3.4×10 38至3.4×10 38 十进制精度:6-9个有效数字 记

  • 我正在尝试将数字从十进制值转换为其IEEE 752形式。例如: 我写了这个方法: 有个问题我解决不了,我再举个例子说清楚。 但是当数字为负数时,例如 我收到以下错误: 这意味着我的代码可以完美地处理正数(包括零),但如果是负数,代码就会崩溃。问题出在哪里? 笔记 我想我可以用这种方式解决我的问题 检查是否有一个字符At(0)等于1 如果是(numero.charAt(0)==1),则删除第一个字符

  • 由于所有Java浮点数(浮点数和双精度浮点数)在内部都表示为位,因此我想找到一种有效的算法来转换表示该浮点数或双精度浮点数位的字符串,并将其转换为相应的浮点数-我找不到它的内置库函数,所以我求助于自己编写它。 长度为32的二进制字符串表示浮点,其中长度为64的二进制字符串将转换为double。所有浮点数都可以转换为双精度浮点数,而不会损失精度。将忽略空格。 示例 “0 10000000 10010