首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为什么 0/0 会溢出?解决办法

2012-01-13 
为什么 0/0 会溢出?VB codeDim a, b As Doublea 1 / 0Debug.Print Err.Descriptionb 0 / 0Debug.Print

为什么 0/0 会溢出?

VB code
Dim 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

热点排行