gpt4 book ai didi

language-agnostic - 为什么 IEEE754 标准中除以零会产生无限值?

转载 作者:行者123 更新时间:2023-12-03 07:09:49 25 4
gpt4 key购买 nike

我只是好奇,为什么在 IEEE-754 中任何非零 float 除以零都会得到无穷大的值?从数学角度来看这是无稽之谈。所以我认为此操作的正确结果是 NaN。

如果 x 是实数,则当 x=0 时,函数 f(x) = 1/x 没有定义。例如,如果 IEEE-754 生成 NaN 值,则不会为任何负数和 sqrt(-1.0f) 定义函数 sqrt。但 1.0f/0 是 Inf

但由于某种原因,IEEE-754 中的情况并非如此。这肯定是有原因的,也许是一些优化或兼容性的原因。

那么有什么意义呢?

最佳答案

It's a nonsense from the mathematical perspective.

是的。不,有点。

事实是: float 是近似值。您希望使用广泛的指数和有限的位数并获得不完全错误的结果。 :)

IEEE-754 背后的想法是每个操作都可能触发“陷阱”,从而指示可能出现的问题。他们是

  • 非法(无意义的运算,例如负数的 sqrt)
  • 溢出(太大)
  • 下溢(太小)
  • 除以零(你不喜欢的事情)
  • 不精确(此操作可能会给出错误的结果,因为您会失去精度)

现在,许多人,例如科学家和工程师,不想为编写陷阱例程而烦恼。因此,IEEE-754 的发明者 Kahan 决定,如果不存在陷阱例程,每个操作也应该返回一个合理的默认值。

他们是

  • NaN 表示非法值
  • 为溢出签名的无穷大
  • 下溢有符号零
  • NaN 表示不确定结果 (0/0),无穷大表示 (x/0 x != 0)
  • Inexact 的正常运行结果

事实是,在 99% 的情况下,零是由下溢引起的,因此 99%即使从数学角度来看无穷大是错误的,但在所有时候无穷大都是“正确的”。

关于language-agnostic - 为什么 IEEE754 标准中除以零会产生无限值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com