当前位置: 首页 > 知识库问答 >
问题:

在java中,如何获得浮点的尾数?

孙宏壮
2023-03-14

我试图得到浮点数的尾数(只是为了学习),但它没有按预期工作。

比如说5.3的尾数是53,对吗?我尝试了以下代码

System.out.println(Float.floatToIntBits(5.3f) & 0x7FFFFF);

它打印了2726298。它不应该去掉指数位并留下53吗?我尝试了很多事情,但总是这样。我做错了什么?

共有2个答案

胥玮
2023-03-14

来自文章IBM:Java的新数学。浮点数(俄语)获取尾数的最简单方法是:

public static double getMantissa(double x) {
    int exponent = Math.getExponent(x);
    return x / Math.pow(2, exponent);
}
夏新翰
2023-03-14

符合IEEE标准的单精度公式为:

(-1)^sign + 1.Mantissa x 2^(Exponent - Bias)

所以5.3base 10是101.0100110011001100110011base 2

101.0100110011001100110011 = 1.010100110011001100110011 * 2^2

2^2=2^(exp-bias),偏差=127(根据IEEE单精度标准)
因此:exp-127=2=

单精度工作台:

0 | 10000001 | 01010011001100110011001

符号=0,尾数=2726297

 类似资料:
  • 我有一个程序,它运行在两个处理器上,其中一个不支持浮点运算。所以,我需要在处理器中使用定点执行浮点计算。为此,我将使用浮点仿真库。 我需要首先在支持浮点的处理器上提取浮点数的符号、尾数和指数。所以,我的问题是如何得到单精度浮点数的符号、尾数和指数。 按照此图的格式,

  • 问题内容: Python是否提供了获取浮点值的功能,该函数是通过将现有浮点值的最低有效位递增而得到的? 我正在寻找类似于C ++ 11中添加的功能的东西。 问题答案: 这里有五个(实际上是四个半)解决方案。 解决方案1:使用Python 3.9或更高版本 2020年10月发布的Python 3.9包括一个新的标准库函数,该函数直接提供此功能:用于将下一个浮点数向正无穷大。例如: 如果查看方法提供的

  • 我想从现有的浮点数中提取1个十进制浮点数。 我在Objective-C中做过:使浮点只显示两位小数 知道如何在Swift中实现吗?

  • 关于尾数(关于浮点运算的指南),实际上如何将两个尾数相乘? 假设IEEE 754单精度浮点表示。 假设一个数字的尾数为,将被编码为(十进制为)。第二个数字的尾数为,将被编码为(十进制为)。 <代码>1.5 x 1.125=1.6875。 编码为(十进制为)。但是不等于... 尾数乘法是如何工作的,以至于将4194304(1.5)乘以1048576(1.125),得到5767168(1.6875)?

  • 我有一个程序,我需要将一个变量设置为C中最低的可表示(非无限)双精度浮点数。如何将变量设置为最低的双精度浮点值? 我尝试使用std::numeric_limits。我没有使用C 11,所以我无法尝试使用最低()函数。我尝试使用max(),但是当我尝试它时,它返回无穷大。我还尝试从max()中减去一个值,希望这样我就可以得到一个可表示的数字。 输出: 如何将上面示例中的low_值设置为最低的可表示双

  • 我在学习如何使用java 8流时,发现了一些奇怪的事情。 <代码>数组。stream()具有除浮点数组之外的所有方法: <代码>数组。流(int[]):int流 同样,有int、双精度等的Stream实现,但没有浮点数: 有什么原因吗? 使用浮动流的推荐方法是什么?