Evg*_*zin 41 language-agnostic floating-point ieee-754
我只是好奇,为什么在IEEE-754任何非零浮点数除以零时会产生无穷大的值?从数学角度来看,这是无稽之谈.所以我认为这个操作的正确结果是NaN.
如果x是实数,则当x = 0时,不定义函数f(x)= 1/x.例如,如果IEEE-754生成NaN值,则不为任何负数定义函数sqrt,并为sqrt(-1.0f)定义函数sqrt .但1.0f/0是Inf.
但由于某些原因,事实并非如此IEEE-754.必须有一个原因,可能是一些优化或兼容性原因.
那有什么意义呢?
Tho*_* S. 57
从数学角度来看,这是无稽之谈.
是.没有.排序.
问题是:浮点数是近似值.您希望使用各种指数和有限数量的数字,并获得并非完全错误的结果.:)
IEEE-754背后的想法是每个操作都可以触发指示可能出现的问题的"陷阱".他们是
现在,许多像科学家和工程师一样的人不想为编写陷阱例程而烦恼.因此,IEEE-754的发明者Kahan决定,如果不存在陷阱例程,每个操作也应返回合理的默认值.
他们是
事实上,在99%的情况下,零是由下溢引起的,因此在99%的情况下,即使从数学角度来看错误,Infinity也是"正确的".
我不确定你为什么认为这是胡说八道.
简单的定义a / b,至少对于非零b,是在达到零之前必须从中b减去的唯一s 数a.
将其扩展到b可以为零的情况,必须从任何非零数字中减去以得到零的数字确实是无限的,因为你永远不会得到零.
另一种看待它的方法是谈谈限制.当正数n接近零时,表达式1 / n接近"无穷大".你会注意到我引用了这个词,因为我坚信不会传播无限的妄想实际上是一个具体的数字:-)
NaN 保留用于无法用任何其他值(包括无穷大)表示(甚至近似)数字的情况,它被认为与所有其他值不同.
例如,0 / 0(使用我们上面的简单定义)可以减去任何数量的bs a以达到0.因此结果是不确定的 - 它可以是1,7,42,3.14159或任何其他值.
类似地,诸如负数的平方根之类的东西,在IEEE754使用的实际平面中没有值(你必须转向复平面),无法表示.
小智 6
在数学中,除零是未定义的,因为零没有符号,因此两个结果同样可能,并且排除:负无穷大或正无穷大(但不是两者).
在(大多数)计算中,0.0有一个符号.因此,我们知道我们接近的方向,以及无限的标志.当0.0表示非零值太小而不能由系统表示时尤其如此,因为通常情况如此.
NaN唯一合适的时间是系统是否确切地知道分母是真的,恰好为零.除非有一种特殊的方式来指定它,否则它不会增加开销.