【发布时间】:2019-12-17 20:47:38
【问题描述】:
我已经知道如何使用截断实现半精度浮点数的转换(感谢this answer)。但是我怎样才能使用四舍五入来做同样的转换呢?例如,我希望 65519 舍入为 0x7bff(即 65504),而不是无穷大。再举一个例子:在链接解决方案中,8199 将由 8192 表示,但 8199 最接近的可表示为 8200
UPD: 更多示例:我想将 32768 和 65519 之间的整数舍入为 32 的倍数,将 16384 和 32768 之间的整数舍入为 16 的倍数,依此类推。在此解决方案中,8199 将由 8192 表示,但 8199 最接近的可表示为 8200
【问题讨论】:
-
65519 是一个整数。轮到什么?您只是将最后 N 位设置为零吗?
-
@tadman 这是半精度浮点数,所以 OP 必须意味着 65519.0 无法表示。
-
无法表示。例如,我想将 32768 和 65519 之间的整数舍入为 32 的倍数,将 16384 和 32768 之间的整数舍入为 16 的倍数等等。寻找在 c 上实现此功能的最佳方法
-
@FiddlingBits 当然,这更有意义。
标签: c floating-point rounding