【问题标题】:Rounding IEEE 754 Floating Point Numbers四舍五入 IEEE 754 浮点数
【发布时间】:2018-04-07 18:54:20
【问题描述】:

我了解 IEEE 754 标准支持 4 种舍入模式,我只是想确保我对每一种都非常了解。下面的例子正确吗?

• 向正无穷取整:这是否意味着无论 LSB 是什么(0 或 1),我们都将其加一?

假设我们有 1.1010100000000...00 向正无穷大四舍五入意味着我们做 +1,所以我们得到 1.1010100000000...01 并且类似地,当我们有 1.10101000000..01 并且我们需要向正无穷大四舍五入时,我们做 +1 和我们得到 1.1010100000...10?

• 向负无穷舍入:我们将 0 添加到 LSB 意味着我们什么都不做(意味着它与截断模式相同)或者我们将 LSB 更改为 0(如果 1 我们将其更改为 0,如果 0 我们保留它0)?

• 截断模式:只需切断 GRS 位

• 向最近的偶数舍入:我从 How to perform round to even with floating point numbers 现在很清楚了。

【问题讨论】:

    标签: floating-point binary rounding


    【解决方案1】:

    您的问题表明您正在考虑实际的实现,但更容易以更简单、更抽象的术语来考虑舍入策略,然后实现自然而然地到位。

    除了一些细节之外,你基本上是对的。

    • 向 +inf 舍入意味着 如果结果不准确,则应选择两个候选者中最接近 +inf 的值。首先,在符号量级中,后一种可能性仅意味着在计算结果为正数时在有效数字上加一个。如果结果是否定的,那么您建议对截断模式执行的“GRS 位截断”是正确的。 (思考两秒钟应该会让你相信,舍入到 +inf 和截断在负数结果上是正常的。)其次,如果结果是准确的(这意味着在你正在考虑的实现中 GRS 位全为零),即使结果是肯定的,计算的位也应该按原样返回。

    • 类似地,向 -inf 舍入与截断阳性结果一致,并且对应于在不精确的阴性结果的有效位上加一。

    【讨论】:

    • 谢谢您的回复 请问您所说的“两位候选人”是什么意思,您是指添加一位而不是添加一位作为两位候选人?
    • @HasanHammoud “两个候选者”,当结果不是完全可表示的浮点值时,参考数学结果最接近的两个可表示浮点值。事实上,他们在有效位上“加一”和“不加一”——请记住,在符号数量级上,在负数结果的有效数字上加一会使结果更低(离零更远)。
    • 好吧,最后一个例子,我想我明白了。所以有一个由 1.1010101(010) 表示的负数,其中括号中的数字是 GRS,那么我的正无穷大轮将只是 1.1010101。如果回合趋向于负无穷大,我将 LSB 加 1 以使其更趋向于负无穷大。那是对的吗 ? @PascalCuoq
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    相关资源
    最近更新 更多