我在我的代码中进行的计算中遇到了这个问题,如果divident也为0,则除数为0。在我的代码中,我返回0表示该情况。我想知道,虽然除零通常是未定义的,为什么不对这种情况做例外?我理解为什么除零是不确定的基本上是它无法逆转。但是,在0/0的情况下我没有看到这个问题。
编辑好的,所以这个问题引发了很多讨论。我犯了一个错误,就是因为它得到了很多选票而过于急切地接受了答案。我现在接受AakashM's answer,因为它提供了如何分析问题的想法。
答案 0 :(得分:77)
让我们说:
0/0 = x
现在,重新排列等式(将两边乘以0)得出:
x * 0 = 0
现在你看到了这个问题吗? x的值无穷多,因为任何乘以0的值都是0.
答案 1 :(得分:58)
这是数学而不是编程,但简单地说:
在某种意义上,将正无穷大的“值”赋给some-strictly-positive-quantity / 0
是合理的,因为限制是明确定义的
但是,x / y
x
和y
的限制往往为零取决于他们采用的路径。例如,lim (x -> 0) 2x / x
显然是2,而lim (x -> 0) x / 5x
显然是1/5。限制的数学定义要求遵循限制的路径是相同的。
答案 2 :(得分:19)
(受托尼·布兰亚(Tony Breyal)在我自己的帖子中发布的相当好的答案的启发)
零是一个棘手而微妙的野兽 - 它不符合我们所知道的代数的通常规律。
零除以任何数字(零除外)为零。更多数学:
0/n = 0 for all non-zero numbers n.
当你试图将零除以自己时,你会陷入棘手的境界。除以0的数字总是未定义的,这是不正确的。这取决于问题。我将从微积分中给出一个示例,其中定义了数字0/0 。
假设我们有两个函数,f(x)和g(x)。如果你取他们的商,f(x)/ g(x),你得到另一个函数。我们称之为h(x)。
您还可以限制功能。例如,函数f(x)的限制为x变为2是函数最接近的值,因为它接近x的x。我们将此限制写为:
lim{x->2} f(x)
这是一个非常直观的概念。只需绘制您的功能图表,然后沿着它移动铅笔。当x值接近2时,请查看函数的位置。
现在我们的例子。让:
f(x) = 2x - 2
g(x) = x - 1
并考虑他们的商:
h(x) = f(x)/g(x)
如果我们想要lim {x-> 1} h(x)怎么办?有定理说
lim{x->1} h(x) = lim{x->1} f(x) / g(x)
= (lim{x->1} f(x)) / (lim{x->1} g(x))
= (lim{x->1} 2x-2) / (lim{x->1} x-1)
=~ [2*(1) - 2] / [(1) - 1] # informally speaking...
= 0 / 0
(!!!)
所以我们现在有:
lim{x->1} h(x) = 0/0
但我可以使用另一个定义,称为 l'Hopital的规则 ,它告诉我这个限制也等于2.所以在这种情况下,0/0 = 2(我不是告诉你这是一只奇怪的野兽?)
这是0的另一点奇怪。让我们说0/0遵循旧的代数规则,任何除以它的东西都是1.然后你可以做以下证明:
我们得到了:
0/0 = 1
现在将两边乘以任意数字n。
n * (0/0) = n * 1
简化双方:
(n*0)/0 = n
(0/0) = n
再次,使用0/0 = 1:
的假设 1 = n
所以我们只是证明了所有其他数字n都等于1!所以0/0不能等于1.
在mathoverflow.com上回到她的家中
答案 3 :(得分:5)
以下是完整的解释:
http://en.wikipedia.org/wiki/Division_by_zero
(包括证明1 = 2 :-))
您通常使用if语句在编程中处理此问题,以获得应用程序所需的行为。
答案 4 :(得分:5)
问题在于分母。分子实际上是无关紧要的。
10 / n
10 / 1 = 10
10 / 0.1 = 100
10 / 0.001 = 1,000
10 / 0.0001 = 10,000
Therefore: 10 / 0 = infinity (in the limit as n reaches 0)
模式是随着n变小,结果变得更大。在n = 0时,结果是无穷大,这是不稳定或非固定点。你不能把无穷大写成一个数字,因为它不是, 它是一个不断增加的数字的概念 。
否则,您可以使用对数定律在数学上考虑它,从而将等式划分为等式:
log(0/0) = log(0) - log(0)
BUT
log(0) = -infinity
同样,问题是结果是未定义的,因为它是一个概念,而不是您可以输入的数字。
说完这一切之后,如果你对如何将一个不确定的形式变成一个确定的形式感兴趣,请查看l'Hopital的规则,它有效地说:
f(x) / g(x) = f'(x) / g'(x)
假设存在限制,因此您可以得到一个固定点而不是不稳定点的结果。
希望有所帮助,
Tony Breyal
P.S。使用日志规则通常是一种很好的计算方法来解决执行操作的问题,这些操作导致数量如此微小,以至于给定机器浮点值的精度,与零无法区分。实际编程示例是“最大可能性”,通常必须使用日志以保持解决方案稳定
答案 5 :(得分:3)
反过来看除法:如果a / b = c则c * b = a。现在,如果你用a = b = 0代替,你最终得到c * 0 = 0.但是任何乘以零等于零,所以结果可以是任何东西。您希望0/0为0,其他人可能希望它为1(例如,当x接近0时,sin(x)/ x的限制值为1)。所以最好的解决方案是保持未定义并报告错误。
答案 6 :(得分:2)
现代数学的结构是由数学家设定的,他们用公理来思考。 如果没有高效率的额外公理,并且不能让人们做更多的事情,那就违背了清晰数学的理想。
答案 7 :(得分:2)
你可能想看看Dr. James Anderson关于Transarithmetic的工作。它没有被广泛接受。
Transarithmetic引入术语/数字'Nullity'取0/0的值,James将其比作引言'i'和'j'。
答案 8 :(得分:1)
0进多少次0? 5.是 - 5 * 0 = 0,11。是 - 11 * 0 = 0,43。是 - 43 * 0 = 0.也许您可以看到它为什么现在未定义? :)
答案 9 :(得分:1)
由于x/y=z
应该等同于x=yz
,并且任何z
都会满足0=0z
,这样的“例外”会有多大用处?
答案 10 :(得分:1)
为什么0/0
未定义的另一个解释是你可以写:
0/0 = (4 - 4)/0 = 4/0 - 4/0
并且4/0
未定义。
答案 11 :(得分:0)
如果a / b = c,那么a = b * c。 在a = 0且b = 0的情况下,c可以是任何值,因为对于c的所有可能值,0 * c = 0将为真。因此,0/0未定义。
答案 12 :(得分:0)
0表示什么都没有,所以如果你什么都没有,那么它并不意味着任何东西可以分发给任何东西。一些公交设施在列出特定线路的行程次数时,行程编号0通常是以不同方式路由的特殊路线。通常情况下,一个很好的例子就是Torrance Transit Systems,其中第2行在第一次行程之前有一次行程,称为行程编号0,仅在工作日运行,特别是该行程是行程编号0,因为它是路由的专用路径与所有其他路线不同。
有关详细信息,请参阅以下网页: http://transit.torrnet.com/PDF/Line-2_MAP.pdf http://transit.torrnet.com/PDF/Line-2_Time_PDF.pdf
在地图上,行程编号0是以虚线映射的行程,实线表示常规路径。
有时0可用于编号路线在其被视为“快速服务”路线时所经历的行程。
答案 13 :(得分:0)
这只是一个逻辑答案而不是数学答案, 想象零为空如何将空分为空这是除以零的情况也是如何除以空的东西。
答案 14 :(得分:-1)
当您键入0除以零时,会出现错误,因为无论您从零乘以零都将为零,因此它可以是任何数字。
答案 15 :(得分:-1)
这就是我要做的事情:
function div(a, b) {
if(b === 0 && a !== 0) {
return undefined;
}
if(b === 0 && a === 0) {
return Math.random;
}
return a/b;
}
答案 16 :(得分:-1)
为什么不为此做一个例外 情况?
由于:
答案 17 :(得分:-7)
Andrzej Doyle说:
零点潜水是无限的。 0/0也是无穷大。你不能得到0/0 = 1.这是数学的基本原理。这就是整个世界的发展方向。但你可以肯定编辑一个程序,如他们在手机中所说的那样说“0/0不可能”或“不能除零”。