【发布时间】:2011-07-03 15:34:04
【问题描述】:
为什么1/0 == Inf 不是在所有语言中都有?这不是数学上最正确的反应吗?
我熟悉的所有语言都能够同时表达 Infinite 和 NaN 值,那么为什么他们会选择抛出错误或返回 NaN 呢?仅仅是为了让科学应用程序开发人员的生活更加艰难吗? ;-)
更新:我们或许应该关闭这个问题,因为我错误地认为 Java 中的 1f/0f == Float.NaN。但我错了:它确实正确地返回了Float.Infinity。那是我的主要困惑。某些语言会抛出错误这一事实是可以理解的,只要没有语言返回 NaN。
【问题讨论】:
-
1/0 总是返回 Infinite,并可能引发浮点异常。 0/0 返回 NaN,并可能引发浮点异常。
-
@Tim Nordenfur:参见 IEEE 754 §7.1 和 §7.2(除以有限非零数和除数零 → 除以零陷阱或正确签名的 INFINITY;0/0 → 无效操作陷阱或安静的 NaN)。
-
1/0 == Infinity 是一个经典的数学拖钓问题。我咬牙回答,但这个问题真的会惹麻烦。
-
@Steven 但这不是一个数学网站,大多数编程语言实际上确实这样处理它,尽管你的数学严谨,但你对拖钓的指责并不是很建设性的。如果没有你坚持这个事实,你的答案会好很多。
-
哎呀....不。这绝对是最错误的回应!!! 哭
标签: math programming-languages divide-by-zero