首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IEEE舍入格式

IEEE舍入格式
EN

Stack Overflow用户
提问于 2013-11-14 10:35:44
回答 1查看 2.3K关注 0票数 3

我正在尝试从下面的关于快速IEEE舍入源中学习IEEE舍入的特性

有人能解释一下围捕的方程式吗?修整意味着什么?地板和天花板的功能是什么?我试过IEEE 754,但没有提到这些

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-14 13:59:25

让我们从楼层()和天花板()开始(从现在起我将称之为"ceil“)。这些是将实数映射到整数的基本数学函数。从形式上讲,它们的定义如下:

代码语言:javascript
复制
floor(x) = max { n in Z | n <= x }
ceil(x) = min { n in Z | n >= x }

更明显的是,x的地板是不大于x的最大整数,而ceil是不小于x的最小整数。下面是一些例子:

  • floor(1.5)1
  • ceil(2)2
  • floor(-3.14159)-4

有关更多细节,请咨询维基百科

好,现在让我们转到四舍五入。每个实数x要么是整数(在这种情况下是floor(x) == x == ceil(x)),要么位于两个整数floor(x) < x < ceil(x)之间。从数学上讲,“舍入规则”是一个函数f,它用以下属性将实数映射到整数:对于每个实数xf(x) = floor(x)f(x) = ceil(x)。这为在任何情况下选择可能的结果留下了很大的灵活性,因此有许多不同的舍入规则。下面是一些示例(这些当然不是详尽无遗的):

  • floor( )ceil( )中的每一个都是舍入规则。
  • “圆向零”:简单地丢弃输入的小数部分。这也被称为截断,并且通常被写成一个称为trunc( )的数学函数。可以将其定义为trunc(x) = ceil(x) (如果是x < 0 ),而trunc(x) = floor(x)则定义为*。例如,trunc(1.5)1trunc(-2.7)-2
  • “舍入零”或“向无穷远的圆”:这是截断的“反面”;如果x < 0的结果是floor(x),则结果是ceil(x)。这个规则没有一个通用的数学名称,所以我把它叫做round-away( )。例如:round-away(1.001)2round-away(-0.7071067812)-1
  • “循环到奇数”:如果输入的x是整数,则返回x。否则,看看floor(x)ceil(x)。因为它们是连续整数,所以其中一个是偶数,另一个是奇数。把奇怪的还回去。例如:round-to-odd(1.001)1round-to-odd(-2.001)-3round-to-odd(4.0)4.0
  • “圆到最近,联系到偶数”:这是IEEE-754的默认舍入模式。我会称它为round( ),但这个名称在C库中被用来表示不同的舍入规则,我不想混淆每个人,所以我将在这里将它命名为rne( )。这里的思路如下:如果有一个最接近x的唯一整数,则返回该整数。否则,x正好位于两个整数之间;其中一个是偶数,另一个是奇数。把偶数还回去。

最后一条规则可以写成"RU和补“,但从数学角度来看,这是一种有点奇怪的想法。更常见的是,它的正式定义大致如下:

代码语言:javascript
复制
rne(x) = floor(x)  if x - floor(x) < 0.5
         floor(x)  if x - floor(x) = 0.5 and floor(x) is even.
         ceil(x)   if x - floor(x) = 0.5 and floor(x) is odd.
         ceil(x)   if x - floor(x) > 0.5

这个rne( )规则的一些实际操作示例:rne(0.5)0rne(-1.5)-2rne(1.3)1rne(1.8)2

好的,这都是关于整数的四舍五入。这和舍入最近的浮点数有什么关系,比如IEEE-754?舍入规则不仅可用于整数的整和,还可通过简单地将其按b**n因子缩放到任意固定数的数字,其中b是表示的基础,而n被选中,以便该数字的所需舍入点最终位于单位位置( LSB)。当然,我们实际上并不需要对结果进行缩放;相反,我们只需将舍入规则中的ceil(x)floor(x)替换为x值四舍五入,并达到所需的数字数。

*我在这里定义实数的数学函数,而不是给出IEEE-754的实现。因此,不需要处理诸如-0infnan这样的边缘情况。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19975413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档