为什么 0/0 会溢出?解决办法
为什么 0/0 会溢出?VB codeDim a, b As Doublea 1 / 0Debug.Print Err.Descriptionb 0 / 0Debug.Print
为什么 0/0 会溢出?
VB codeDim a, b As Doublea = 1 / 0Debug.Print Err.Descriptionb = 0 / 0Debug.Print Err.Description
第一个输出 除数为零
第二个输出 溢出
为什么 0 / 0 不是除零错误,而是溢出呢?
[解决办法]反正都是错的.
[解决办法]我数学忘光了。
无穷大乘以零是不是等于零。
[解决办法]这个问题是VB语言的机制问题了,我下面的回答只是猜测性的:
可能是VB首先检查被除数是否为零:
1、如果被除数不为0,紧接着检查除数是否为0
此时如果除数为0则判断出除数为零的特别错误。
如果除数不为0,则直接进行运算了;
2、如果被除数为0,则按0除以任何一个数均为0的原则,直接进行运算了,
而没有进一步进行除数是否为0的判断!
[解决办法]Dim a, b As Double
b = CDec(0) / 0
Debug.Print Err.Description
[解决办法]看对应的汇编?
[解决办法]可以把这个问题这样理解:
1/0即求1中有多少个0,0/0即求0中有多少个0。
对于前者你可以做出一个对与错的判断,而对于后者则很难给一个合理的解答。
[解决办法]1)这不属于VB的独有范畴
2)属于2进制除法运算的范畴
3)涉及0在硬件的表示
4)涉及原码和补码
[解决办法]0/0
0/0(称之为未定式)在数学上没有定义。 在物理上这是有一定的解释的。比如说电阻定义 R=,当电压和电流都为0时R的值不确定。 例如,若考虑极限 且有f(c)=g(c)=0。若 f(x)等于g(x),极限为一;若f(x)等于g(x)的两倍,则极限为二。 更一般地,0/0型的极限可以通过洛必达法则求得。
参考:http://baike.baidu.com/view/585475.htm?fr=ala0_1
[解决办法]我认为,仅仅是因为微软工程师在捕获异常时区分了这两种情况,且给出的 Description 是这个样子。
实际上,1/0 在 VB 中的异常描述也称为 Attempt to divide by zero resulted in overflow。
[解决办法]分母不能为零,如果分母为零,则VB就判断为错误,自然就溢出。
[解决办法]零除自陷
在除法的定义中就规定了:除数不能为:0