Nei*_*aft 4 math programming-languages divide-by-zero
为什么不是1/0 == Inf
每种语言?这不是数学上最正确的反应吗?
我熟悉的所有语言都能够表达无限和NaN值,那么为什么他们会选择抛出错误或返回NaN呢?是否只是让科学应用程序开发人员的生活变得更难?;-)
更新:我们应该关闭这个问题,因为我错误地认为1f/0f == Float.NaN
在Java中.但我错了:它确实正确回归Float.Infinity
.这是我的主要困惑; 只要没有语言返回NaN,一些语言抛出错误的事实是可以理解的.
Kon*_*lph 17
除了1/0 == inf在数学上非常值得怀疑的事实之外,它在大多数编程语言中不起作用的简单原因是几乎普遍1 / 0
执行整数除法(存在例外).
结果是一个整数,根本没有办法在整数中编码"无穷大".有浮点数,这就是浮点除法在大多数语言中实际产生无限值的原因.
对于NaN也是如此:虽然IEEE浮点标准定义了表示NaN值的位模式,但整数没有这样的值; 因此,这些值根本不能表示为整数.