binary - 如何使用 float 执行舍入到偶数

标签 binary floating-point rounding

关于 IEEE-754 单精度浮点数,您如何执行舍入到最近,将舍入到所需位置中最近的偶数位(默认和迄今为止最常见的模式)?

基本上我有保护钻头、圆形钻头和粘性钻头。
因此,如果我们将它们组成一个向量并将其称为 GRS,则适用以下规则:

  • G = 0 ,向下舍入(什么都不做)
  • G = 1 , 和 RS == 10RS == 01 , 向上取整(尾数加一)
  • 如果 GSR = 111 , 舍入为偶数

  • 所以我不确定如何执行到最近的回合。任何帮助是极大的赞赏。

    最佳答案

    只是为了确保我们在同一页面上,G是三个中的最高有效位,R接下来是 S可以被认为是最低有效位,因为它的值部分代表了在计算中被截断的甚至更低的有效位。这三位只在计算时使用,不会在计算前后存储在浮点变量中。

    为了使用 G 将结果四舍五入到最接近的偶数,您应该这样做, RS :

    GRS - 行动
    0xx - 向下舍入 = 什么都不做(x 表示任何位值,0 或 1)
    100 - 这是一个 领带 : 如果尾数位在 之前,则向上取整G 是 1,否则向下舍入 = 什么都不做
    101 - 围捕
    110 - 围捕
    111 - 围捕

    向上舍入是通过将尾数加 1 来完成的,尾数位于 G 之前的尾数最低有效位位置。 .如果尾数溢出(您将存储的 23 个最低有效位变为 0),您必须将指数加 1。如果指数溢出,则根据数字的符号将数字设置为 +infinity 或 -infinity。

    在平局的情况下,如果尾数是奇数,则在尾数上加 1,如果尾数是偶数,则不加任何内容。这就是使结果四舍五入到最接近的偶数值的原因。

    关于binary - 如何使用 float 执行舍入到偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981913/

    相关文章:

    java - 如何将二进制序列末尾的零存储到 BitSet (Java) 中?

    java - 整数到二进制数组

    file-io - 以Fortran : Status,格式打开二进制文件,访问权限

    c++ - Sin 和 Cos 为众所周知的角度提供意想不到的结果

    scala - 通过在 Scala 中传递小数位数作为参数来格式化数字

    索引数组的 C++ 二进制值

    java - 在JAVA中,可以使用大数小数来进行 float 和 double 的减法

    c - 返回浮点参数 f 的表达式 -f 的位级等价物

    swift - 将 Double 舍入到最接近的 10

    java - 如何将十进制数格式化为 2 位或 3 位数字?