提问人:Steve 提问时间:9/27/2023 最后编辑:Steve 更新时间:9/28/2023 访问量:39
“向下舍入”应该如何处理无符号 minifloat 实现中的负面结果?
How should "round down" treat negative results in unsigned minifloat implementation?
问:
我正在研究 Minifloat 实现,不确定在向下舍入时如何处理负结果(又名“圆形地板”或“向 -∞ 舍入”),并且没有符号位。
即在最简单的情况下,一个 0.1.1 迷你浮点数(带值),我假设(或任何其他负面结果)会在向上舍入时计算,但如果我们使用“向下舍入”规则,它应该是还是?{0, 1, Infinity, NaN}
0 - 1
0
0
NaN
编辑:为了澄清,就我而言,我主要感兴趣的是将更高精度的数字四舍五入到较小子集的“最正确”元素。此外,从标题中删除了“IEEE 754”,因为这是非标准的。
答:
在无符号 minifloat 实现中向下舍入时,负结果应被视为 minifloat 的最小可表示值。
无符号迷你浮点数可以表示介于 0 和最大可表示值之间的数字,没有符号位。因此,负数不能直接表示在无符号的小浮点数中。
向下舍入时,应将负结果视为最小可表示值。这意味着任何负结果都将向下舍入为 0,因为这是可以在 minifloat 中表示的最小值。
例如,如果 minifloat 的精度为 3 位,范围为 0 到 7,则向下舍入 -2 将得到 0。
需要注意的是,无符号迷你浮点数并非旨在表示负数,此舍入行为只是在实现中处理负结果的解决方法。
在更多地考虑了什么最有意义,考虑到这些答案/评论,并与 ChatGPT 进行了快速的共鸣板聊天之后,我认为尽可能严格地遵守四舍五入规则定义是最有意义的。因此,所有负片的“下限”都应该返回,而所有负片的“上限”都应该返回。我认为对于比零低一半以上的负数返回“最接近偶数”也是有意义的——具体来说,我将假设它是有符号的,然后转换为 ,但任何其他负数都将四舍五入为“更接近”于零。NaN
+0
NaN
-0
+0
NaN
这似乎既最不令人惊讶,也是最通用的。如果调用者更愿意将负数四舍五入为零,那么在四舍五入之前很容易做到,这将首先用零替换所有负数(并保留,至少在 JS 中)。因此,严格的选择最终也是最灵活的,因为如果库实现是宽松的,则很难获得行为。max(0, x)
NaN
NaN
评论